[英]Why does insert error 1062 occur, although it should not be?
服務器版本:10.3.22-MariaDB-0+deb10u1 - Debian 10
桌子
CREATE TABLE `background` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '',
`data` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '[]',
`priority` tinyint(4) NOT NULL DEFAULT 0,
`time` int(11) NOT NULL DEFAULT 0,
`attempt` int(11) NOT NULL DEFAULT 0,
`status` tinyint(4) NOT NULL DEFAULT 0,
`add` int(11) NOT NULL DEFAULT 0,
`update` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=2002280000000127419 DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE (`id`)
(PARTITION `d200226` VALUES LESS THAN (2002270000000000000) ENGINE = InnoDB,
PARTITION `d200227` VALUES LESS THAN (2002280000000000000) ENGINE = InnoDB,
PARTITION `d200228` VALUES LESS THAN (2002290000000000000) ENGINE = InnoDB)
定期插入時出現錯誤1062
INSERT INTO `background` (`name`, `data`, `priority`, `time`, `status`, `add`) VALUES ('move', '{\"id\":2002280000000000448,\"frame\":18}', 1, 1582840572, 0, 1582840572)
我在網上查了一下,建議innodb_autoinc_lock_mode從1改成2,但這沒有用,還是出現錯誤。
問題:怎么辦?
感謝您的回答。
MySQL 1062 錯誤是“密鑰的重復條目”。
表中唯一的唯一約束是PRIMARY KEY (`id`)
。
我在顯示的環境中看到 2 個可能的原因:
1)手動更新id
字段值(或插入指定id
值的新記錄)。 當自動增量生成器給出表中已經存在的值時,就會發生錯誤。
2)存在一些在插入時觸發的觸發器,它將數據插入或更新另一個表中的數據,並且插入/更新的值會導致一些唯一的約束違規。
要選擇在您的特定情況下發生的原因,您必須顯示錯誤消息的全文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.