免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 13910 | 回复: 23
打印 上一主题 下一主题

MyISAM表插入数据的经常Duplicate entry key的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-17 14:52 |只看该作者 |正序浏览
MyISAM表结构,发现如果程序经常的insert数据,时间长了后就会出现Duplicate entry ‘xxx’ for key... 的问题,repair表后就回复正常了,ID是autoincrement的,也没有重复的键值,只有一个程序对其进行insert操作,不知道是不是Myisam引擎本身的问题呢?
这种问题是没有规律的,不一定什么时候就出现了,不过一般是数据量比较大的时候,比如达到6位数出现的几率就多了一点。

论坛徽章:
0
24 [报告]
发表于 2008-04-26 17:06 |只看该作者
如果你是关键应用,机器性能不是很好(不经常死机)的情况下,我也推荐你用INNODB引擎,因为MYISAM引擎,在非法关闭mysql的时候,出现表损坏,虽然可以修复,但是以后还会出现,如果你对mysql性能不是特别苛刻,建议你用mysql官方提供的已经编译好的二进制版本。:wink:

论坛徽章:
0
23 [报告]
发表于 2008-04-25 13:44 |只看该作者
嗯,因为是应用程序的日志表,所以写会频繁些,偶尔会查询,不会很多,我也觉得应该改成INNODB引擎。

谢谢各位的回复

论坛徽章:
0
22 [报告]
发表于 2008-04-25 13:11 |只看该作者
如果写太多的话,还是建议换成INNODB引擎。

论坛徽章:
0
21 [报告]
发表于 2008-04-25 12:51 |只看该作者
可能连续写表写得太狠了吧,可以试试这样:
锁表→写个几百条→解锁→歇一会
如此循环。

论坛徽章:
0
20 [报告]
发表于 2008-04-25 10:22 |只看该作者
原帖由 yueliangdao0608 于 2008-4-25 09:53 发表



六位数?

你确定你的自增字段类型不是MEDIUMINT的?

不是 定义的int 系统识别的应该是int(11)

不是一到6位数就OVER了 比如有时是123456条记录OVER 有时是654321条记录OVER 我说的意思就是说在6位数时候比较常见

论坛徽章:
0
19 [报告]
发表于 2008-04-25 09:53 |只看该作者
原帖由 乱.码 于 2008-4-25 09:26 发表
这个问题我实在没搞清楚为什么会出现,也不明白为什么会无缘无故出现表损坏的情况,难道myisam经常出现这个问题?不清楚。
因为我并非手动插入数据,而是有个C程序持续的往里写数据,并且是单进程、单线程的, ...



六位数?

你确定你的自增字段类型不是MEDIUMINT的?

论坛徽章:
0
18 [报告]
发表于 2008-04-25 09:26 |只看该作者
这个问题我实在没搞清楚为什么会出现,也不明白为什么会无缘无故出现表损坏的情况,难道myisam经常出现这个问题?不清楚。
因为我并非手动插入数据,而是有个C程序持续的往里写数据,并且是单进程、单线程的,绝对不会同时有两个session往里写数据,id字段,int类型,也就是auto_increment字段也是不指定的,让其自动增长,可就是当数据量达到6位数时就会出现这个问题,执行表修复就正常了,之后偶尔也会出现。

论坛徽章:
0
17 [报告]
发表于 2008-04-24 12:39 |只看该作者
最直接的办法就是导出所有数据,然后导入

论坛徽章:
0
16 [报告]
发表于 2008-04-24 11:26 |只看该作者
原帖由 乱.码 于 2008-4-18 10:33 发表


出问题的时候我用了check 列出了类似这样的错误:
error | Found xxxx keys of yyyy
error | corrupt

其中xxxx != yyyy
select max(id) from Syslog;
返回的值也不等于 最后一条记录的ID



看你mysqlcheck的结果,可知应该是因为mysql表损坏导致这种情况.
当指定插入127这个值时,mysql发现key中已经存在(可能是因为之前在insert时,刚好在127这个地方出问题了,更新key文件ok,但更新数据文件失败).根据约束规则,所以报duplicate key错误;
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP