diff --git a/changelog.d/8729.bugfix b/changelog.d/8729.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..7f59a3b9e264646f1ffac9bd35cca1c7134e3fec
--- /dev/null
+++ b/changelog.d/8729.bugfix
@@ -0,0 +1 @@
+Fix port script fails when DB has no backfilled events. Broke in v1.21.0.
diff --git a/scripts/synapse_port_db b/scripts/synapse_port_db
index 7a638ea8e3e6924ad63d573b05e316337161b22a..604b961bd281101bd0a99291307503e2a1dbda49 100755
--- a/scripts/synapse_port_db
+++ b/scripts/synapse_port_db
@@ -876,14 +876,12 @@ class Porter(object):
                     "ALTER SEQUENCE events_stream_seq RESTART WITH %s", (next_id,)
                 )
 
-            txn.execute("SELECT -MIN(stream_ordering) FROM events")
+            txn.execute("SELECT GREATEST(-MIN(stream_ordering), 1) FROM events")
             curr_id = txn.fetchone()[0]
-            if curr_id:
-                next_id = curr_id + 1
-                txn.execute(
-                    "ALTER SEQUENCE events_backfill_stream_seq RESTART WITH %s",
-                    (next_id,),
-                )
+            next_id = curr_id + 1
+            txn.execute(
+                "ALTER SEQUENCE events_backfill_stream_seq RESTART WITH %s", (next_id,),
+            )
 
         return self.postgres_store.db_pool.runInteraction(
             "_setup_events_stream_seqs", r