diff --git a/mutalyzer/entrypoints/admin.py b/mutalyzer/entrypoints/admin.py
index c4308b232810ea16c1a7b523b3e39a243efc33fa..c235a93f39532434a42b6c17324b2357341cf281 100644
--- a/mutalyzer/entrypoints/admin.py
+++ b/mutalyzer/entrypoints/admin.py
@@ -173,9 +173,15 @@ def setup_database(alembic_config_path=None, destructive=False):
         raise UserError('Cannot find Alembic configuration: %s'
                         % alembic_config_path)
 
+    bind = db.session.get_bind()
+
     if destructive:
-        db.Base.metadata.drop_all(db.session.get_bind())
-    db.Base.metadata.create_all(db.session.get_bind())
+        db.Base.metadata.drop_all(bind)
+
+    if destructive or not bind.has_table(Assembly.__tablename__):
+        # We assume our migrations will take care of everything if at least
+        # the Assembly table exists.
+        db.Base.metadata.create_all(bind)
 
     if alembic_config_path:
         context = MigrationContext.configure(db.session.connection())