0

Spreadsheet私は現在、それぞれが6列の2291行で呼び出されるデータベースを持っています。

また、同じ6列のこれらの行がさらに1000個ある.csvファイルがありますが、そのうちの3つはデフォルトに設定されNULLています(データベース内の一部のデータと同じです。つまり、一部はデフォルトとしてNULLに設定されています)。replace私はそれらを(ではなく)既存のデータベースにインポートしようとしていました。

最初の列はですprimary key。.csvとデータベースの両方に重複する主キーがないことを私は知っています。主キーは次のようになります。0015000000b0Y2u

primary keys私の質問は、#1062エラーが発生することなく、これらの1000行(それ自体が一意である)を既存の2291行にインポートするにはどうすればよいですか?

SQL query:

INSERT INTO  `Spreadsheet` (  `accountID` ,  `accountName` ,  `website` ,  `rating` ,  `imageURL` ,  `comments` ,  `category` ) 
VALUES (

'0015000000b0Y3z',  'Kittredge and Associates Inc',  'kittredgeandassociates.com', NULL ,  'kittredgeandassociates.com.jpg', NULL , NULL
)
MySQL said: 

#1062 - Duplicate entry '0015000000b0Y3z' for key 'PRIMARY' 

上に添付されているのは、の重複キーがないことを100%確信しているにもかかわらず、私が受け取った#1062エラーですPRIMARY

私はそれを調べたので、mySQLの自動インクリメントをしたくありません、そしてそれは私が探している解決策ではありません。

重複エントリの違反者キーを変更しようとしましたが、役に立たず、同じエラーが発生しました。誰かが私に手を貸してくれませんか?

4

2 に答える 2

3

問題は、主キーが大文字と小文字を区別しない照合を含む文字列であることにあると思われます(例latin1_swedish_ci)。その場合、小文字と大文字は「等しい」と見なされ、重複する可能性があります。

これがデモンストレーションです。collat​​ion_nameの値の違いに注意してください。

CREATE TABLE t3 (mycol VARCHAR(4) COLLATE latin1_swedish_ci PRIMARY KEY );
INSERT INTO t3 VALUES ('A'),('a');

-- Error Code: 1062
-- Duplicate entry 'a' for key 'PRIMARY'

CREATE TABLE t4 (mycol VARCHAR(4) COLLATE latin1_bin PRIMARY KEY );
INSERT INTO t4 VALUES ('A'),('a');

-- 2 row(s) affected

MySQLで大文字と小文字を等しくないと見なす必要がある場合は、その列で大文字と小文字を区別しない照合ではなく、大文字と小文字を区別する照合またはバイナリ照合を指定する必要があります。

_ci(注:MySQLは、照合名の末尾にaを付けて、大文字と小文字を区別しない照合に名前を付けlatin1_swedish_ciます。例:)

列が現在latin1文字セットとlatin1_swedish_ci照合である場合は、列の照合をまたはのいずれかに変更することをお勧めしlatin1_general_csますlatin1_bin

例えば

ALTER TABLE t3 CHANGE mycol mycol VARCHAR(4) COLLATE latin1_general_cs ;

http://dev.mysql.com/doc/refman/5.5/en/case-sensitivevity.html

http://dev.mysql.com/doc/refman/5.5/en/adding-collat​​ion.html

于 2013-01-02T20:21:52.633 に答える
0

PKおよびその他の一意のインデックスに違反していないことが正しい場合、このエラーがどのように発生するかわかりません。解決策は、ON DUPLICATEKEYUPDATEまたはIGNOREキーワードを使用することです。

于 2013-01-02T20:11:31.157 に答える