requests
テーブルの1つのフィールドの個別の値をテーブルの唯一のフィールドに挿入しようとしていますpastmonth
CREATE TABLE `pastmonth` (
`video_id` char(5) DEFAULT NULL,
PRIMARY KEY (`video_id`)
);
INSERT INTO pastmonth (video_id)
SELECT DISTINCT (video_id)
FROM requests
WHERE exec_datetime >= NOW() - 60*24*60*60;
ただし、このエラーが発生します
Error Code: 1062. Duplicate entry 'abcde' for key 'PRIMARY'
abcde
次のクエリは、エントリが1つしかないことを示しているため、テーブルの値に重複するエントリがあるとは思いませんがrequests
、とにかくDISTINCT値を選択しているため、エントリがあったかどうかは関係ありません。
SELECT COUNT(*) FROM requests WHERE video_id = 'abcde';
COUNT(*)
1
私は一意ではないインデックスを持っていrequests.video_id
ますが、それは私が抱えている問題とは無関係だと思います。破損したbtreeインデックスがある可能性はありますか?
編集
CREATE TABLE `requests` (
`request_id` bigint(20) NOT NULL AUTO_INCREMENT,
`video_id` char(5) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`exec_datetime` datetime DEFAULT NULL,
PRIMARY KEY (`request_id`),
KEY `exec_datetime` (`exec_datetime`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1