次の形式のエラーが表示されるのはなぜですか。
Error in query: Duplicate entry '10' for key 1
...次のような INSERT ステートメントを実行する場合:
INSERT INTO wp_abk_period (pricing_id, apartment_id) VALUES (13, 27)
... 13 と 27 は既存の行の有効な IDpricing
でapartment
あり、テーブルは次のように定義されます。
CREATE TABLE `wp_abk_period` (
`id` int(11) NOT NULL auto_increment,
`apartment_id` int(11) NOT NULL,
`pricing_id` int(11) NOT NULL,
`type` enum('available','booked','unavailable') collate utf8_unicode_ci default NULL,
`starts` datetime default NULL,
`ends` datetime default NULL,
`recur_type` enum('daily','weekly','monthly','yearly') collate utf8_unicode_ci default NULL,
`recur_every` char(3) collate utf8_unicode_ci default NULL,
`timedate_significance` char(4) collate utf8_unicode_ci default NULL,
`check_in_times` varchar(255) collate utf8_unicode_ci default NULL,
`check_out_times` varchar(255) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`),
KEY `fk_period_apartment1_idx` (`apartment_id`),
KEY `fk_period_pricing1_idx` (`pricing_id`),
CONSTRAINT `fk_period_apartment1` FOREIGN KEY (`apartment_id`) REFERENCES `wp_abk_apartment` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_period_pricing1` FOREIGN KEY (`pricing_id`) REFERENCES `wp_abk_pricing` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
key 1
id
この場合、auto_increment
指定できないほどオンになっているのではないでしょうか。
注: に未使用の値を指定しただけでは、id
問題INSERT INTO wp_abk_period (id, pricing_id, apartment_id) VALUES (3333333, 13, 27)
なく動作しますが、再度設定されているauto_increment
ため、これを行う必要はありません。
注 2: OK、これは完全な「トワイライト ゾーン」の瞬間です。したがって、上記のクエリを の膨大な数で実行した後、id
正常に動作し始め、それ以上は動作しなくなりduplicate entry errors
ました。この奇妙な動作を生成するためにMySQLが行っていたWTFを誰かが説明できますか?