データベースのインポート中のMySQLエラー


7

Magentoをアップグレードしたい。そのため、最初にライブの本番システムを開発ワークスペースに転送したいと思います。本番データベースをクリーンなデータベースにインポートしようとしています。しかし、正しくインポートできません。私はいくつかのオプションを試しました:http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/restoring_a_backup_of_a_magento_databaseに示されているステートメントを含む(および除外する)異なる設定でphpMyAdminを介してエクスポートするMagento管理を介してエクスポートする

Magento 1.5.1.0、phpMyAdmin 4.0.8、および最新バージョンのBigDumpを使用してインポートしています。

これは私がしばらくして受け取るエラーです:

行8699のエラー:UPDATE CASCADEのDELETE CASCADEにCONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN KEY(store_id)REFERENCES mage_core_storestore_id)を追加してください。クエリ:ALTER TABLE mage_catalog_category_entity_datetime ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_ATTRIBUTEFOREIGN KEY(attribute_id)REFERENCES mage_eav_attributeattribute_id)ON DELETE CASCADE ON UPDATE CASCADE、ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_ENTITYFOREIGN KEY(entity_id)REFERENCES mage_catalog_category_entityentity_id)ON DELETE CASCADE ON UPDATE CASCADE、ADD CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN KEY(store_id)REFERENCES mage_core_store(ADE store_idON DELETE ONCA CASCADE MySQL:子行を追加または更新できません:外部キー制約が失敗しました(goldenm101_mage4#sql-182e_c1d79、CONSTRAINT FK_CATALOG_CATEGORY_ENTITY_DATETIME_STOREFOREIGN KEY(store_id)REFERENCES mage_core_storestore_id)ON DELETE CASCADE ON UPDATE CASC) '

追加情報:SSHアクセスがありません。

mageUzの可能な解決策後のエラー:

1487637行目のエラー:UPDATE CASCADEのDELETE CASCADEにCONSTRAINT FK_catalogrule_product_websiteFOREIGN KEY(website_id)REFERENCES mage_core_websitewebsite_id)を追加してください。クエリ:--ALTER TABLE mage_catalogrule_product ADD CONSTRAINT FK_catalogrule_product_customergroupFOREIGN KEY(customer_group_id)REFERENCES mage_customer_groupcustomer_group_id)ON DELETE CASCADE ON UPDATE CASCADE、ADD CONSTRAINT FK_CATALOGRULE_PRODUCT_PRODUCTFOREIGN KEY(product_id)REFERENCES mage_catalog_product_entityentity_id)ON DELETE CASCADE ON UPDATE CASCADE、ADD CONSTRAINT FK_catalogrule_product_ruleFOREIGN KEY(rule_id)REFERENCES mage_catalogrulerule_id)ON DELETE CASCADE ON UPDATE CASCADE、CONSTRAINT ADD FK_catalogrule_product_websiteFOREIGN KEY(website_id)REFERENCES mage_core_websitewebsite_idDELETE CASCADE ON UPDATE CASCADEのMySQL ON)を:子行を追加または更新できません:外部キー制約が失敗しました(goldenm101_mage4#sql-182e_308afaFK_catalogrule_product_customergroup外部キーの制約(customer_group_id)参照mage_customer_groupcustomer_group_id)CASCの削除)


magerunを試してみてください:github.com/netz98/n98-magerun#dump-database
Thorsten

回答:


11

これは、データベースに外部キー制約があるためです。インポートする前に以下の手順に従ってください

1)データベースのエクスポートされたSQLファイルを開き、最初に次のSQLクエリを追加します

SET FOREIGN_KEY_CHECKS = 0;

2)ファイルの最後に移動して追加します

SET FOREIGN_KEY_CHECKS = 1;

これはうまくいくはずです。インポート中に外部キーのチェックを無効にしてから、再度有効にします。


1
コメントに感謝しますが、それが解決策である場合はすでに機能しているはずです(投稿のリンクに示されているように)これらのステートメントはすでに追加されているため、Magento管理者によるデータベースのエクスポートによって自動的に追加されます。
PeterPayn 2014

2

SSHアクセスがありますか?その場合は、次のコマンドを試してmagentodbください(データベースの名前に置き換える必要があります)。

mysqldump -u root -p magentodb > magentodb.sql
mysqldump -u root -p magentodb | gzip -v > magentodb.sql.gz

2番目のコマンドはデータベースをすぐに圧縮します。これは、ダウンロードする必要がある場合に便利です。mysqlのrootアクセス権がない場合は、別のアカウントを使用してください。

テストマシンでデータベースを解凍し、次のコマンドを実行します。

mysql -u root -p test_magentodb < magentodb.sql

これは私の好みの方法です。私たちのデータベースのサイズは2GBであり、他の方法はこのような大規模なデータベースでは失敗します。


残念ながら私はSSHアクセスができませんが、コメントをありがとうございます。
PeterPayn 2014

シェルコマンドを実行できるphpスクリプトを実行できますか?小さなテストデータベースでこれをテストできます。それが機能する場合は、magentoデータベースで試すことができます。
SPRBRN 2014

1
私はphpinfo.phpを確認しましたが、shell_execは無効な関数であると表示されています。それがあなたの質問に答えるなら。
PeterPayn 2014

これは、私が最初に試したときに完璧に機能しました。ありがとうございました!phpMyAdmin Exportを使用して、何度も試行して数時間たってもデータベースをコピーできませんでした。
Daniel Flippance、2015年

2

mage_core_storeテーブルは少し異なってインポートされたようですが、magento dbをインポート/移行したときにもこのような問題に何度か直面しました。一部のテーブル(core_store、core_website、core_store_group、customer_group)の最初の行は、元のキーではなく、異なる主キーでインポートされます。

ソリューション:

SET FOREIGN_KEY_CHECKS = 0;ダンプを使用してインポートします。

クエリを実行します。

SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;

私があなたが言っていることを理解しているかどうかはわかりません。もしかして:ファイルの最後でオンに戻さずに、sqlファイルをエクスポートして編集し、(のみ)「Foreign key check」行を追加します。そして、それがインポートされた場合、そのクエリを実行しますか?
PeterPayn 2014

@ PetePayn、dbダンプのインポートが成功した後にクエリを実行します
mageUz '

そのため、phpMyAdmin(Vimを使用)経由でエクスポートに1行を追加し、bigdumpを使用して新しいデータベースにインポートしました。それは約94%でしたが、別のエラーが表示されました。メインの質問にエラーを追加しました。
PeterPayn 14

データのないデータベース構造のみをインポート/エクスポートしてみてください。構造をインポートできた場合は、データをインポートしてみてください。
mageUz 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.