13

私はここで完全に途方に暮れています。2 つのデータベースがあります。開発に使用するローカルホスト サイトに 1 つ、ライブ (運用) サイトに使用するリモート サイトに 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'

ローカルホストに新しい空のデータベースを作成し、それにインポートしようとしましたが、結果は同じでした。すべてのテーブルとインデックスを検証しましたが、問題は見つかりませんでした。

これが解決されるまで私は完全にダウンしているので、何か提案をお願いします。

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

4

7 に答える 7

9

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

于 2013-08-02T15:59:24.840 に答える
7

"mysqldump --insert-ignore ..." を使用して localhost にデータベースをダンプし、稼働中のマシンで phpmyadmin を使用してインポートを試みます。

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

次に、次のことを試すことができます。

$ mysql -f -p < yourdump.sql

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

于 2013-12-19T23:55:09.833 に答える
5

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

CREATE DATABASE IF NOT EXISTS *THE_NAME_OF_YOUR_DB* DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; USE *THE_NAME_OF_YOUR_DB*;

そして、この名前のDBがすでにあると確信しています-IN THE SAME SERVER-上書きしようとしているので、確認してください!! 名前を変更するか、または(より良い)この行を消去してください!

于 2013-08-25T09:34:26.857 に答える
1

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

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

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

于 2016-12-13T16:01:22.617 に答える
0

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

于 2016-02-11T21:55:21.893 に答える
0

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

ここに画像の説明を入力 ここに画像の説明を入力

主キー列のデータはすべて異なると思われるため、下1に変更する3とエラーはなくなりました。

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

于 2014-03-23T00:27:03.843 に答える