【发布时间】:2011-08-14 13:06:22
【问题描述】:
我整理了一个unit testing plugin for Symfony 1.4,它尝试自动管理数据库,类似于 Django 的测试框架的做法(在测试之间销毁和重建数据库)。
在第一次测试运行之前销毁和重建数据库是有意义的,因为架构可能在开发过程中发生了变化,而且让开发人员手动保持他的测试数据库与他的模型同步简直是可怕的虐待狂.
但是,在第一次测试运行后,我发现删除所有数据通常会更快,这将是一个相当简单的任务,除了外键问题,需要删除数据正确的顺序。
对于 MySQL,这不是问题;只需SET FOREIGN_KEY_CHECKS = 0,你就可以破坏对你内心内容的引用完整性(当然,直到SET FOREIGN_KEY_CHECKS = 1,但在这种情况下,将没有数据留下,所以MySQL没有什么可抱怨的)。
但这只有在测试数据库使用 MySQL 时才有效。对于任何其他 DBMS(尤其是 Sqlite),这将失败。
Doctrine 1.2 是否提供了删除每个表中所有数据的方法,或者是否有“遵循”关系的方法(即确定哪些表具有外键并首先从中删除)?
【问题讨论】:
标签: php doctrine foreign-keys doctrine-1.2