MySQL 5.1.56、MyISAM を使用しています。私のテーブルは次のようになります。
CREATE TABLE IF NOT EXISTS `my_table` (
`number` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`money` int(11) NOT NULL,
PRIMARY KEY (`number`,`name`)
) ENGINE=MyISAM;
次の 2 行が含まれます。
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(1, 'S. Name', 150), (2, 'Another Name', 284);
今、私は別の行を挿入しようとしています:
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(2, 'S. Name', 240);
そして、MySQLは私にこれを伝えている間、それを挿入しません:
#1062 - Duplicate entry '2-S. Name' for key 'PRIMARY'
私は本当にそれを理解していません。主キーは最初の 2 つの列 (両方とも) にあるため、挿入しようとしている行には一意の主キーがありますね。
テーブルを修復しようとしましたが、テーブルを最適化しようとしましたが、すべて役に立ちませんでした。また、MyISAM から InnoDB に変更することはできません。
何か不足していますか、それとも MySQL または MyISAM のバグですか? ありがとう。
要約して、どこに問題があると思うかを指摘します (問題があるべきではありませんが): テーブルには 2 つの列に主キーがあります。これら 2 つの列に値の新しい組み合わせを含む行を挿入しようとしていますが、列 1 の値は既にいくつかの行にあり、列 2 の値はすでに別の行にあります。しかし、それらはどこにも結合されていないので、これはうまくいくと信じていますが、うまくいかないことに非常に混乱しています.