0

私はInnoDB MySQLデータベースと格闘していますが、あまり運がありません(通常、私はMyISAMの男です)。実稼働データベースからコンテンツを取得して、開発データベースにコピーしようとしています (たとえば、同じスキーマなど.. 別の Web サイトに接続しただけです)。通常、MyISAM では次のようにします。

1) Dump the prod databse: mysqldump -u root -p prod_db_name > prod_dump.sql
2) Log into mysql terminal; 
3) drop database dev_db_name;
4) create database dev_db_name;
5) exit mysql terminal
6) mysql -u root -p dev_db_name < prod_dump.sql

出来上がり。

ただし、この特定の状況でこれを行うと、新しく作成された開発データベースにフックされた Web サイトを使用してコンテンツを更新しようとするまで、すべてがうまくいくように見えます。その場合、次のエラーが発生します。

Error Number: 1452

Cannot add or update a child row: a foreign key constraint fails (`abbott/logs`, CONSTRAINT `fk_logs_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`))

明らかに、これは users テーブルに関連しています。それが違いを生むかどうかはわかりませんが、1 つの要因として、users テーブルに入力されるユーザー ID を制御できないことが考えられます。これらは、外部のシングル サインオン / フェデレーション API から供給されます。

--single-transaction を mysqldump コマンドに追加してみました (盲目的な推測)。FOREIGN_KEY_CONSTRAINTS = 0 を設定するだけでなく、各テーブルを手動で削除して再度オンにし、ダンプを読み込みます (たとえば、データベース全体を削除するのではなく)。

どんな助けでも大歓迎です。リース。

4

0 に答える 0