zoukankan      html  css  js  c++  java
  • 插入数据显示 Duplicate entry '4913' for key 'user_id'

    提示信息翻译:插入4913 使索引重复
    分析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就会产生这个错误。


    一般发生在对数据库写操作的时候,例如Discuz!4.1论坛程序要求所有会员的用户名username必须唯一,即username 的索引是unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发上这个错误,或者将一条记录的username更新为已有的一个username。
    改变表结构的时候也有可能导致这个错误。例如 Discuz!4.0论坛的数据库中cdb_members.username 的索引类型是 index 这个时候是允许有相同username的记录存在的,在升级到4.1的时候,因为要将username的索引由原来的index变为unique。如果这时cdb_members里存在有相同的username的记录,那么就会引发这个错误。
    导出数据据时有时会因为一些原因(作者目前还不清楚)导致同一条记录被重复导出,那么这个备份数据在导入的时候出现这个错误是在所难免的了。
    修改了auto_increment的值,致使“下一个 Autoindex”为一条已经存在的记录

    2:可能是你的数据表中像 ID 这样的自增字段AUTO_INCREMENT出现了问题,使用AUTO_INCREMENT时,应注意以下几点:
    AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。
    设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为UNSIGNED,这样序列的编号个可增加一倍。
    AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复。
    AUTO_INCREMENT数据列必须具备NOT NULL属性。
    AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

  • 相关阅读:
    Java 编程下的并发线程之间的同步代码块死锁
    Java 编程下的同步代码块
    Android 编程下两种方式注册广播的区别
    Java 编程下泛型的内部原理
    Android 编程下使用 Google 的 Gson 解析 Json
    c# 调用音库开发英语单词记忆本
    在.Net中实现RichClient+Restful+JPA架构探索实现
    Extjs 常用正则式
    企业内IT部门的一些问题总结
    WinServer2003部署VS2010的水晶报表
  • 原文地址:https://www.cnblogs.com/jiechn/p/4200805.html
Copyright © 2011-2022 走看看