A few problems came up for us:
-
When database-cleaner lists out the tables to be deleted, the tables are not ordered by foreign key constraints. So we have child with a foreign key to parent, but DELETE FROM "parent" is attempted to be run before DELETE FROM "child", causing the table to not be deleted because there are still rows in child referencing parent
-
When the above command didn't work, database-cleaner silently failed. I believe database-cleaner should check that the table was indeed cleared, and error otherwise.
Truncation seems to work for us. Is there a reason why truncation is not the default?
A few problems came up for us:
When
database-cleanerlists out the tables to be deleted, the tables are not ordered by foreign key constraints. So we havechildwith a foreign key toparent, butDELETE FROM "parent"is attempted to be run beforeDELETE FROM "child", causing the table to not be deleted because there are still rows inchildreferencingparentWhen the above command didn't work,
database-cleanersilently failed. I believedatabase-cleanershould check that the table was indeed cleared, and error otherwise.Truncation seems to work for us. Is there a reason why truncation is not the default?