9

サンプルデータをテーブルに入力するために使用./bin/doctrine orm:fixtures:loadすると、最初の移行により、1、2、3、4、5 などの自動インクリメンタルテーブル ID が設定されます...

2 番目orm:fixtures:loadの移行コマンドの後、すべてのデータが消去され、5、6、7、8、9 などの ID が設定されます...

フィクスチャを何度もロードするときに AI id カウンターを 1 にリセットするにはどうすればよいですか?

4

2 に答える 2

21

$ app/console help doctrine:fixtures:load

デフォルトでは、Doctrine Data Fixtures は DELETE ステートメントを使用してデータベースから既存の行を削除します。代わりに TRUNCATE ステートメントを使用する場合は、 --purge-with-truncate フラグを使用できます。

./app/console doctrine:fixtures:load --purge-with-truncate

Truncate は自動インクリメントをリセットします。

アップデート

コンソール コマンドは Symfony 用ですが、Doctrine のみを使用しても同じである必要があります。

./bin/doctrine orm:fixtures:load --purge-with-truncate

例外のスローに関するコメントの更新 #2

外部キーAUTO_INCREMENTがある場合は、通常の SQL を介してのみリセットできます。

$connection = $this->getEntityManager()->getConnection();
$connection->exec("ALTER TABLE <tablename> AUTO_INCREMENT = 1;");
于 2012-09-17T08:23:25.320 に答える