loading...

关于mysql判断字符串的诡异事件

发布时间:September 26, 2007 分类:MySQL

增加了feedsky的订阅

Apache防盗链的使用和破解

一个用户在添加Discuz!的js调用的时候提示

SQL: INSERT INTO [Table]settings (variable, value) VALUES ('jswizard_threads_eME', '....')
Error: Duplicate entry 'jswizard_threads_eME' for key 1
Errno.: 1062

上面的数据库错误显示是提示settings已经有了jswizard_threads_eME这个数据,但实际上确实又没有这个数据,一直在排查是什么原因,然后发现了这个mysql诡异的现象

当settings表内存在jswizard_threads_Cp4时,
再插入jswizard_threads_eME会提示Duplicate entry,
也就是说下面2条sql第二条会报错的,
而数据库中确实没有jswizard_threads_eME这个内容。
后来再次测试发现公司的mysql版本为4.1.20有这种情况,mysql 5 无此情况
mysql代码:

INSERT INTO cdb_settings( variable, value ) VALUES ('jswizard_threads_Cp4', '')
INSERT INTO cdb_settings( variable, value ) VALUES ('jswizard_threads_eME', '')

总结下,估计mysql把jswizard_threads_eME和jswizard_threads_Cp4当成同一字符串了
本次诡异事件的主角mysql server version: 4.1.20-log

补记,随后发现更多不能插入的字符串,初步怀疑是settings表的索引坏了,但数据库修复,优化无效,在重建settings表之后问题解决。以后有用户无故(无故是指明明为空但是仍然提示Duplicate entry)数据表不能插入的情况,看来重建数据表也是一个解决方式

Tags: none


已有 8 条评论 »

  1. 大头 大头

    哈哈哈,我路过

  2. lulu lulu

    河蟹的路过

  3. 桔子 桔子

    偶也路过

  4. sherry sherry

    这小孩不错

  5. 习明 习明

    这个嘛`~~~

  6. 空谷 空谷

    飘过

  7. s7v7nislands s7v7nislands

    这个应该是你建的索引的问题。你上面的2个字符串的前17位是一样的,当你的索引:如char(16) 时,他就会有重复键的提示。

  8. kimi kimi

    To s7v7nislands:cdb_settings的索引字段是varchar(32) 应该不是你说的原因 还没找到为什么
    到目前位置再没出现过重复键的这个问题。

添加新评论 »

captcha
请输入验证码