サンプルデータをテーブルに入力するために使用./bin/doctrine orm:fixtures:load
すると、最初の移行により、1、2、3、4、5 などの自動インクリメンタルテーブル ID が設定されます...
2 番目orm:fixtures:load
の移行コマンドの後、すべてのデータが消去され、5、6、7、8、9 などの ID が設定されます...
フィクスチャを何度もロードするときに AI id カウンターを 1 にリセットするにはどうすればよいですか?
サンプルデータをテーブルに入力するために使用./bin/doctrine orm:fixtures:load
すると、最初の移行により、1、2、3、4、5 などの自動インクリメンタルテーブル ID が設定されます...
2 番目orm:fixtures:load
の移行コマンドの後、すべてのデータが消去され、5、6、7、8、9 などの ID が設定されます...
フィクスチャを何度もロードするときに AI id カウンターを 1 にリセットするにはどうすればよいですか?
$ 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;");