私はここで完全に迷っています。 2つのデータベースがあります。 1つは開発に使用するlocalhostサイトに、もう1つはライブ(運用)サイトに使用するリモートサイトにあります。両方ともphpMyadminで管理します。私は今何ヶ月もやっているので、ライブサイトを更新する必要があるとき、関連するデータベースをダンプし、ローカルホストサイトからデータベースをインポートします。
今、私が何をしようとしても、私はこのエラーを取得し続けます:
エラーSQLクエリ:
--
-- Dumping data for table `oc_address_type`
--
INSERT INTO `oc_address_type` ( `address_type_id` , `address_type_name` )
VALUES ( 1, 'Billing' ) , ( 2, 'Shipping' ) ;
MySQLによると:ドキュメント
#1062-キー「PRIMARY」のエントリ「1」が重複しています
ローカルホストに新しい空のデータベースを作成して、同じ結果にインポートしようとしました。私はすべてのテーブルとインデックスを検証しましたが、そこでは何も間違ったことを見つけることができません。
これが解決されるまで完全にダウンしているので、どんな提案でもお願いします。
ところで、すべてのテーブルを完全に削除し、構造とデータをインポートしています。これは常に今日まで機能していました。
dropステートメントでダンプする必要があります。テーブルが存在し、すでにデータがあり、同じものをさらに挿入しようとしています。 phpmyadminで100%確実ではありませんが、ダンプには「ドロップテーブルの追加」ステートメントのオプションがあります
「mysqldump --insert-ignore ...」を使用してローカルホストのデータベースをダンプし、ライブマシンでphpmyadminを使用してインポートを試みます。
または、コマンドラインツールを使用してライブデータベースに接続してみてください(最初に「localhost」以外のホストから接続できるようにデータベースを設定してください!)
その後、次のことを試してください:
$ mysql -f -p <yourdump.sql
-f "force"を使用すると、インポート中のエラーを無視できます。これは、「-force」パラメーターを「mysqlimport」に追加するのと同じです。
問題はファイルに関連しています-コピーを使用してDBを作成しようとしています-ファイルの上部に次のようなものがあります。
存在しない場合はデータベースを作成* THE_NAME_OF_YOUR_DB * DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE * THE_NAME_OF_YOUR_DB *;
そして、あなたはすでに同じ名前のDBを持っていると確信しています-同じサーバーで-あなたが上書きしようとしているので、チェックしてください!!名前を変更するだけでOR(より良い)この行を消去してください!
私にとっては、foreign_key_checksとtruncate tableオプションが役に立ちました。
SET foreign_key_checks = 0;
TRUNCATE `oc_address_type`;
SET foreign_key_checks = 1;
上記のsqlスクリプトを実行し、インポート後に。
上書きする以前のテーブルを削除する必要があります。すべてのテーブルの完全な復元を行っている場合は、既存のテーブルをすべて削除します。
私はこれと同じ問題を抱えていました。私の問題は、unique_id
そして、その主キー列に同じ値を2つ追加しようとすると、以下のエラーが返されます。
主キー列のデータはすべて異なると想定されるため、ボトム1
に変更しました3
とエラーはなくなりました。
以前の回答やコメントのように、MySqlは破損していません。