ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql:键“ PRIMARY”和奇异ID行为的条目“ 0”重复

2019-12-10 07:14:48  阅读:318  来源: 互联网

标签:mysql-error-1062 indexing sql mysql


请参阅下面的日志. (仅出于简洁目的而被剪切;在http://pastebin.com/k9sCM6Ee时未被剪切)

简而言之:以某种方式为行分配了ID0.即使发生这种情况,它也会阻止插入,即使这些插入实际上并不与ID 0发生冲突(尽管实际上不应首先发生).

尽管该表已被大量读取并非常繁重地插入(每分钟约30万行),但该表从未更新.唯一插入的方法是导致INSERT INTO查询的方法,如下所示.没有外键等.

a)WTF?
b)我该如何解决?

谢谢!

$mysql --version
mysql  Ver 14.14 Distrib 5.1.30, for apple-darwin9.4.0 (i386) using readline 5.1

$mysql

mysql> SHOW CREATE TABLE visitations \G
*************************** 1. row ***************************
       Table: visitations
Create Table: CREATE TABLE `visitations` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `scraping_id` int(11) NOT NULL,
  `site_id` int(11) NOT NULL,
  `visited` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_visitations_on_scraping_id_and_site_id` (`scraping_id`,`site_id`),
  KEY `index_visitations_on_site_id` (`site_id`)
) ENGINE=InnoDB AUTO_INCREMENT=23525407 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

mysql> show triggers;
Empty set (0.04 sec)

mysql> INSERT INTO `visitations` (`scraping_id`,`site_id`,`visited`) VALUES (647,196,0),(647,51679,0),(647,13689,0),(647,85739,1),(647,4388,0),(647,100346,0),(647,1245,0),[snip];
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'

mysql> SELECT *  FROM `visitations` WHERE  (`scraping_id`,`site_id`,`visited`) IN ((647,196,0),(647,51679,0),(647,13689,0),(647,85739,1),(647,4388,0),(647,100346,0),(647,1245,0),[snip]);
Empty set (1 min 27.43 sec)

mysql> select * from visitations where id = 0;
+----+-------------+---------+---------+
| id | scraping_id | site_id | visited |
+----+-------------+---------+---------+
|  0 |         645 |   46177 |       0 | 
+----+-------------+---------+---------+
1 row in set (0.00 sec)

mysql> delete from visitations where id < 363;
Query OK, 363 rows affected (0.11 sec)

mysql> select * from visitations where id = 0;
Empty set (0.00 sec)

mysql> INSERT INTO `visitations` (`scraping_id`,`site_id`,`visited`) VALUES (647,196,0),(647,51679,0),(647,13689,0),(647,85739,1),(647,4388,0),(647,100346,0),(647,1245,0),[snip];
Query OK, 500 rows affected (0.23 sec)
Records: 500  Duplicates: 0  Warnings: 0

mysql> select * from visitations where id = 0;
Empty set (0.00 sec)

mysql> INSERT INTO `visitations` (`scraping_id`,`site_id`,`visited`) VALUES (647,196,0),(647,51679,0),(647,13689,0),(647,85739,1),(647,4388,0),(647,100346,0),(647,1245,0),[snip];
ERROR 1062 (23000): Duplicate entry '647-196' for key 'index_visitations_on_scraping_id_and_site_id'

解决方法:

您可能遇到了类似以下的错误:

auto increment does not work properly with InnoDB after update

您需要跟踪正在使用的发行版中的更改历史记录,以确定已修复的错误是否会影响您以及是否应该升级.

MySQL 5.1 Change History

标签:mysql-error-1062,indexing,sql,mysql
来源: https://codeday.me/bug/20191210/2100088.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有