テスト時のDoctrine::loadData
テストデータをロードする方法として、
<?php Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');
と書いてるが、外部キーがRESTRICT型制約の場合は、削除ができないためエラーになる。
drop databaseして、create databaseして、create tableしてあげればいい。
<?php Doctrine_Manager::connection()->dropDatabase(); Doctrine_Manager::connection()->createDatabase(); Doctrine_Core::createTablesFromModels(sfConfig::get('sf_lib_dir').'/model/doctrine'); Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');
drop databaseの時「だけ」、SET FOREIGN_KEY_CHECKS = 0をしてくれてるから。
<?php # plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Export/Mysql.php public function dropDatabaseSql($name) { return array( 'SET FOREIGN_KEY_CHECKS = 0', 'DROP DATABASE ' . $this->conn->quoteIdentifier($name), 'SET FOREIGN_KEY_CHECKS = 1' ); }