マスターとスレーブ (異なるマシン) があり、スレーブが 1 つの重複エントリ エラーで停止しました。スレーブでエラーの原因となるクエリを実行すると (SHOW SLAVE STATUS でそのクエリを確認できます) (レプリケーションが停止している場合)、エラーは発生しませんが、スレーブはこのクエリによって停止されます (実際、試してみると、 START SLAVE でレプリケーションを再開すると、エラーが再び表示されます)。適切なクエリ (エラー メッセージなしでスレーブで実行できる) がレプリケーションを停止できるのはなぜですか?
テーブル構造
CREATE TABLE `table` (
`a` int(9) unsigned NOT NULL AUTO_INCREMENT,
`b` varchar(255) NOT NULL,
`c` varchar(25) DEFAULT NULL,
`d` char(40) NOT NULL,
`e` char(64) DEFAULT NULL,
`f` varchar(255) NOT NULL,
`g` varchar(100) NOT NULL,
`h` varchar(25) NOT NULL,
`i` enum('disabled','enabled') DEFAULT 'disabled',
`j` enum('disabled','enabled') DEFAULT 'disabled',
`k` enum('disabled','enabled') DEFAULT 'disabled',
`l` enum('production','sandbox') CHARACTER SET latin1 NOT NULL DEFAULT 'production',
`m` enum('active','uninstalled') NOT NULL DEFAULT 'active',
`n` datetime NOT NULL,
`o` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
`p` int(11) DEFAULT NULL,
`q` char(40) DEFAULT NULL,
`r` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`s` char(40) DEFAULT NULL,
PRIMARY KEY (`a`),
UNIQUE KEY `b_d_index` (`b`,`d`),
KEY `e` (`e`),
KEY `f` (`f`),
KEY `g` (`g`),
KEY `h` (`h`),
KEY `i` (`i`),
KEY `j` (`j`),
KEY `k` (`k`),
KEY `l` (`l`),
KEY `m` (`m`),
KEY `n` (`n`),
KEY `o` (`o`),
KEY `p` (`p`),
KEY `d` (`d`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
完全なエラー
Error 'Duplicate entry 'B-D' for key 'b_d_index'' on query. Default database: 'database_name'. Query:
INSERT INTO `table`
SET `b` = 'B',`c` = 'C',`d` = 'D',`e` = 'E',`f` = 'F',`g` = 'G',`h` = 'H',`i` = 'I',`j` = 'J',`k` = 'K',`l` = 'L',`m` = 'M',`n` = NOW(),`o` = NOW(),`p` = NULL,`q` = 'Q',`r` = NOW()
ON DUPLICATE KEY UPDATE `c` = 'C',`d`= 'D',`e`='E',`f`='F',`g`='G',`h`='H',`i`='I',`j`='J',`k`='K',`l`='L',`m`='M',`o`='2012-12-19 14:06:34'
前もって感謝します。