1

編集:私はマペットです。そのため、挿入しようとしていた行を慎重にトロールした後、コードにバグがあり、空の文字列が挿入されていました。これが複数回発生したため、同じデータを再度挿入しようとしたため、MySQL は当然のことながらエラーをスローしました。無駄な時間をすみません!モッズは、これを自由に削除してください。

私のテーブル構造は次のとおりです。

CREATE TABLE IF NOT EXISTS `foo` (
  `user` varchar(80) NOT NULL,
  `group` varchar(20) NOT NULL,
  `completed` int(1) NOT NULL,
  PRIMARY KEY  (`user`,`group`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ここで、MySQL Insert を実行しようとすると、重複があるというエラーがスローされます (キーが設定されていると機能しません)。私が得られないのは、これらのエラーが表示される理由です。これらの複合値の複製を挿入していないことはわかっています (ただし、一部の値はグループ列に何度も表示されます。

私の挿入の例:INSERT INTO food(user, group, completed) VALUES ('user1', 'groupA', '0'),('user2', 'groupB', '0'),('user3', 'groupA', '0');

したがって、ユーザーとグループの組み合わせは間違いなく一意です。では、一意でないキーを挿入しようとしていると不平を言うのはなぜですか?

#1062 - キー 1 のエントリ 'groupA' が重複しています。一度に 1 行または 2 行を挿入しようとしている場合は問題ないようですが、現在 140 行を一度に挿入しようとしています。

ありがとう!

4

2 に答える 2

2

「group」は予約語であるため、列名として使用できません。

列名を変更しましたが、クエリは正常に機能します。

実際の SQL を完全に「難読化」したため、エラーの原因となるタイプミスを編集した可能性は十分にあります。

于 2012-12-11T02:06:17.073 に答える
0

キーは複合ではありません。複合エラーは次のようになります

ERROR 1062 (23000): Duplicate entry 'user1-groupA' for key 'PRIMARY'

インデックスを作成するすべての列の値が表示されることに注意してください。

列グループだけに別のインデックスがあると思います。

于 2012-12-11T02:46:26.837 に答える