簡體   English   中英

為什么會出現插入錯誤 1062,雖然它不應該發生?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM