diff --git a/src/metabase/models/card.clj b/src/metabase/models/card.clj
index 38847d4df5819b0abb99d678abf248f64d49bf5c..597056a35fcdc52fb5022400f347e61f9d691765 100644
--- a/src/metabase/models/card.clj
+++ b/src/metabase/models/card.clj
@@ -58,6 +58,7 @@
                                                           :dashboards)))))
 
   (pre-cascade-delete [_ {:keys [id]}]
+    (cascade-delete 'Revision :model "Card" :model_id id)
     (cascade-delete 'DashboardCard :card_id id)
     (cascade-delete 'CardFavorite :card_id id)))
 
diff --git a/src/metabase/models/dashboard.clj b/src/metabase/models/dashboard.clj
index e6eb7259a3344a627c2be46b1f9afca0d139dc81..373a77c75d66a3a4098d71468579fd0a09616b10 100644
--- a/src/metabase/models/dashboard.clj
+++ b/src/metabase/models/dashboard.clj
@@ -32,6 +32,7 @@
         map->DashboardInstance))
 
   (pre-cascade-delete [_ {:keys [id]}]
+    (cascade-delete 'Revision :model "Dashboard" :model_id id)
     (cascade-delete DashboardCard :dashboard_id id)))
 
 (extend-ICanReadWrite DashboardEntity :read :public-perms, :write :public-perms)
diff --git a/src/metabase/models/database.clj b/src/metabase/models/database.clj
index 01c98545921165054aaa7b11a277a3147f7dcf0a..22d203a3463706177e583de0ea5a0845df459f00 100644
--- a/src/metabase/models/database.clj
+++ b/src/metabase/models/database.clj
@@ -31,6 +31,7 @@
         :tables (delay (sel :many 'metabase.models.table/Table :db_id id :active true (order :display_name :ASC))))))
 
   (pre-cascade-delete [_ {:keys [id] :as database}]
+    (cascade-delete 'metabase.models.card/Card :database_id id)
     (cascade-delete 'metabase.models.table/Table :db_id id)))
 
 (extend-ICanReadWrite DatabaseEntity :read :always, :write :superuser)