免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 13907 | 回复: 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
2 [报告]
发表于 2008-04-17 15:17 |只看该作者
原帖由 乱.码 于 2008-4-17 14:52 发表
MyISAM表结构,发现如果程序经常的insert数据,时间长了后就会出现Duplicate entry ‘xxx’ for key... 的问题,repair表后就回复正常了,ID是autoincrement的,也没有重复的键值,只有一个程序对其进行insert操 ...


我这里也出现了同样的问题:
一个表主键是 auto_increment 的 int, 测试发现这个表的数据很长时间没有更新, 查看发现:
max(id)  是 126, 然后 insert 一条数据报 duplicate key of '127', 但在 select * 表时并没有 ID 为 127 这条数据.
重启 mysql 服务, 问题依旧. 插入一条 id = 150 的数据成功, 但 mysql 自己还是不能增加数据, 继续报错.
于是 mysqlcheck 了一个这个表, 问题解决.
我知道 myisam 这种存储引挚是有些问题, 经常会出错, 但我想问问这种问题出现的几率, mysqlcheck 是否可以百分百修复这个问题.


求高人指教.

论坛徽章:
0
3 [报告]
发表于 2008-04-17 15:46 |只看该作者
坛子上讨论很多了。
设置
auto_increment_increment

auto_increment_offset

的值。

论坛徽章:
0
4 [报告]
发表于 2008-04-17 16:00 |只看该作者
原帖由 yueliangdao0608 于 2008-4-17 15:46 发表
坛子上讨论很多了。
设置
auto_increment_increment

auto_increment_offset

的值。


我这只有一个mysql服务器 不存在服务器的复制、同步等问题 设这有用嘛

论坛徽章:
0
5 [报告]
发表于 2008-04-17 16:01 |只看该作者
RESET MASETER
重新设置一下你的SLAVE

论坛徽章:
0
6 [报告]
发表于 2008-04-17 16:09 |只看该作者
原帖由 yueliangdao0608 于 2008-4-17 16:01 发表
RESET MASETER
重新设置一下你的SLAVE


我这只有一个mysql服务器 也就是一个数据库 不存在主从的问题

论坛徽章:
0
7 [报告]
发表于 2008-04-17 16:24 |只看该作者
不好意思,没有看清楚。
贴你的表结构看看。
还有你的版本

论坛徽章:
0
8 [报告]
发表于 2008-04-17 16:40 |只看该作者

回复 #7 yueliangdao0608 的帖子


  1. mysql> desc Syslog;
  2. +-------+--------------+------+-----+-------------------+----------------+
  3. | Field | Type         | Null | Key | Default           | Extra          |
  4. +-------+--------------+------+-----+-------------------+----------------+
  5. | id    | int(11)      |      | PRI | NULL              | auto_increment |
  6. | fac   | tinyint(4)   |      | MUL | 0                 |                |
  7. | pri   | tinyint(4)   |      | MUL | 0                 |                |
  8. | host  | varchar(64)  | YES  |     | NULL              |                |
  9. | time  | timestamp    | YES  | MUL | CURRENT_TIMESTAMP |                |
  10. | msg   | varchar(255) | YES  |     | NULL              |                |
  11. +-------+--------------+------+-----+-------------------+----------------+
复制代码


5.0.18

论坛徽章:
0
9 [报告]
发表于 2008-04-17 17:36 |只看该作者
我的建库语句:
  1. CREATE TABLE `sys_log` (
  2.   `log_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `log_type` enum('1','2','3','4') NOT NULL DEFAULT '1',
  4.   `log_level` enum('1','2','3') NOT NULL DEFAULT '1',
  5.   `log_time` varchar(14) NOT NULL DEFAULT '',
  6.   `log_content` text NOT NULL,
  7.   `report_flag` enum('0','1') NOT NULL DEFAULT '0',
  8.   PRIMARY KEY (`log_id`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=26832 DEFAULT CHARSET=latin1
复制代码

数据库版本:
5.0.21-community

我的数据库也是只有一个库, 没有主从和同步关系.

[ 本帖最后由 chouy 于 2008-4-17 17:38 编辑 ]

论坛徽章:
1
双子座
日期:2013-08-19 14:56:16
10 [报告]
发表于 2008-04-17 17:36 |只看该作者
原帖由 乱.码 于 2008-4-17 16:40 发表

mysql> desc Syslog;
+-------+--------------+------+-----+-------------------+----------------+
| Field | Type         | Null | Key | Default           | Extra          |
+-------+----------- ...



show create table Syslog  出来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP