web-dev-qa-db-ja.com

#1062-キー「PRIMARY」のエントリ「1」が重複しています

私はここで完全に迷っています。 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」が重複しています

ローカルホストに新しい空のデータベースを作成して、同じ結果にインポートしようとしました。私はすべてのテーブルとインデックスを検証しましたが、そこでは何も間違ったことを見つけることができません。

これが解決されるまで完全にダウンしているので、どんな提案でもお願いします。

ところで、すべてのテーブルを完全に削除し、構造とデータをインポートしています。これは常に今日まで機能していました。

11
user2646528

dropステートメントでダンプする必要があります。テーブルが存在し、すでにデータがあり、同じものをさらに挿入しようとしています。 phpmyadminで100%確実ではありませんが、ダンプには「ドロップテーブルの追加」ステートメントのオプションがあります

8
exussum

「mysqldump --insert-ignore ...」を使用してローカルホストのデータベースをダンプし、ライブマシンでphpmyadminを使用してインポートを試みます。

または、コマンドラインツールを使用してライブデータベースに接続してみてください(最初に「localhost」以外のホストから接続できるようにデータベースを設定してください!)

その後、次のことを試してください:

$ mysql -f -p <yourdump.sql

-f "force"を使用すると、インポート中のエラーを無視できます。これは、「-force」パラメーターを「mysqlimport」に追加するのと同じです。

7
Dado

問題はファイルに関連しています-コピーを使用してDBを作成しようとしています-ファイルの上部に次のようなものがあります。

存在しない場合はデータベースを作成* THE_NAME_OF_YOUR_DB * DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE * THE_NAME_OF_YOUR_DB *;

そして、あなたはすでに同じ名前のDBを持っていると確信しています-同じサーバーで-あなたが上書きしようとしているので、チェックしてください!!名前を変更するだけでOR(より良い)この行を消去してください!

3
bito_

私にとっては、foreign_key_checksとtruncate tableオプションが役に立ちました。

SET foreign_key_checks = 0;
TRUNCATE `oc_address_type`;
SET foreign_key_checks = 1;

上記のsqlスクリプトを実行し、インポート後に。

1
Gaalvarez

上書きする以前のテーブルを削除する必要があります。すべてのテーブルの完全な復元を行っている場合は、既存のテーブルをすべて削除します。

0
bollos

私はこれと同じ問題を抱えていました。私の問題は、unique_idそして、その主キー列に同じ値を2つ追加しようとすると、以下のエラーが返されます。

enter image description hereenter image description here

主キー列のデータはすべて異なると想定されるため、ボトム1に変更しました3とエラーはなくなりました。

以前の回答やコメントのように、MySqlは破損していません。

0
mattblessed