`

MySQL 自增字段为何出错

 
阅读更多
来源:http://www.zioer.com/mysql-自增字段为何出错/

网站采用PHP和Mysql数据库开发。一直运行良好。最近,服务器在一次断电之后,网站的新闻部分,便无法再添加新的内容。查看网站日志,发现是该表的自增部分报错,错误如下所示:
 


Duplicate entry ’151473′ for key ‘PRIMARY’
 

这种错误的产生,由于是计算机的不正常关闭而导致的。查看该表,关键字段最大值只能到151472。此时,手工增加一条新的记录,也会报同样的错误。说明自增值151473在MySQL的内部已被占用,但是在news表中,该记录并没有被保留。
 


于是,用命令查看news表当前自增值:
 


mysql> show table status like ‘news’;
 

发现在列“Rows”,其值为151472。
 
此时,只需要把该值更改大一点,跳过有错误的记录号,便可以了。
 


mysql>alter table news  auto_increment = 151474;
 

修改完成后,接着在news表中插入新的记录,一切正常。
 
以上这种错误很少出现,比如,会在操作系统非正常关闭或者MySQL数据库突然挂断的情况下,才有可能出现。
 
另一种情况
 
用户设置自增字段过小,也会造成以上错误的发生,比如,报如下错误:
 


Duplicate entry ’127′ for key ‘PRIMARY’
 

以上错误的原因,是用户把关键字段设置为了tinyint类型,这种类型的数据最大也只能到127,所以会报以上错误。
 
此时修改的方法,是将该自增字段的类型修改为int或BIGINT。
 
总之,遇到这种错误,首先需要查看出错的表,以确定具体的原因,比如是数据库错误导致的,还是因为自增字段类型设置的不正确导致的。然后,采用以上两种方法具体解决。

分享到:
评论

相关推荐

    MySQL自增字段为何报错.pdf

    遇到MySQL自增字段报错时,首先需要查看出错的表,以确定具体的原因,然后采取相应的解决方案。同时,需要注意自增字段类型的设置,避免溢出情况的出现。 四、相关知识点 1. MySQL自增字段类型 MySQL自增字段类型...

    mysql自增字段重排 mysql删除表后自增字段从1开始.pdf

    以下是对MySQL自增字段相关知识点的详细说明: 1. **自增初始值设定**: - 当创建一个带有AUTO_INCREMENT属性的表时,可以使用`AUTO_INCREMENT=n`选项指定自增字段的初始值。 - 对于已存在的表,可以使用`ALTER ...

    mysql自增字段重排 mysql删除表后自增字段从1开始.docx

    MySQL中的自增字段是数据库设计中常用的一种特性,主要用于生成唯一的序列号,通常用于主键。自增字段的默认行为是每次插入新记录时自动增加一个整数值,从1开始并递增。然而,当删除记录或有特殊操作时,自增字段的...

    常用数据库的自增字段创建方法汇总

    本文将详细介绍几种主流数据库系统中的自增字段创建方法,包括 DB2、Oracle、MySQL、PostgreSQL、SQL Server 和 Sybase。 #### DB2 DB2 支持通过 `GENERATED ALWAYS AS IDENTITY` 属性来创建自增字段。这种方式...

    python mysql自增字段AUTO_INCREMENT值的修改方式

    在处理MySQL数据库时,经常需要操作自增字段(AUTO_INCREMENT),尤其是当需要调整自增起始值的时候。在Python中与MySQL交互时,了解如何修改AUTO_INCREMENT的值是十分重要的。本文将深入探讨如何在使用Python操作...

    Oracle9i中建立自增字段的最新办法

    在Oracle数据库系统中,与许多其他关系型数据库如MySQL或SQL Server不同,Oracle并没有内置的自增字段(Identity Column)特性。但是,Oracle9i及后续版本提供了Sequence和Trigger机制,使得开发者可以通过这两种...

    oracle迁移mysql自增序列问题

    MySQL提供了两个系统变量来控制自增字段的行为:`auto_increment_offset`和`auto_increment_increment`。前者用于设置自增字段的初始值,后者用于设置自增的步长。例如,要设置自增字段从10开始,每次增加5,可以...

    mysql自增ID起始值修改方法

    在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始值修改与设置方法。通常的设置自增字段的方法:创建表格时添加: 代码如下:create table ...

    JPA主键策略(针对数据库自增字段重置后无效检查项)

    identity是一种使用SQL Server和MySQL的自增字段生成主键的策略。这种策略不能用于Oracle,因为Oracle不支持自增字段。这种策略适用于需要高性能的场景。 select select是一种使用触发器生成主键的策略。这种策略...

    Oracle里的自增字段设置

    在Oracle数据库中,自增字段的设置确实与MySQL等其他数据库系统有所不同。Oracle在较新的12c版本中引入了一种新的语法,使得创建自增序列变得更加方便。这个特性被称为`IDENTITY`列,它允许我们在创建表时直接定义一...

    MySQL字段自增自减的SQL语句示例介绍

    在MySQL数据库中,自增字段通常是用于自动增加序列值,比如在创建新记录时,主键ID会自动递增。然而,除了自增操作,我们有时也需要对字段执行自减操作,例如在处理计数器或者统计值时,如文章的评论数。本篇文章将...

    浅析常用数据库的自增字段创建方法汇总

    MySQL使用`AUTO_INCREMENT`关键字来创建自增字段。在创建表T1时,`id`字段定义为`INT NOT NULL`,`AUTO_INCREMENT`表明这是一个自增字段。MySQL会自动处理自增的逻辑,无需额外设置初始值或递增值。 4. **...

    Oracle 实现类似SQL Server中自增字段的一个办法

    在SQL Server中,自增字段通常通过`IDENTITY`属性实现,它会自动为新插入的行生成一个唯一的序列号。然而,在Oracle数据库系统中,没有直接对应的`IDENTITY`功能,但可以通过其他方式来模拟这个行为。这里我们将讨论...

    mysql 自增长 时间字段

    在 MySQL 中,我们可以为字段设置默认值,以便在插入数据时自动填充。例如,创建一个 Message 表,设置 Content 字段的默认值: ```sql CREATE TABLE Message ( Message_ID int NOT NULL PRIMARY KEY AUTO_...

    MySQL中不能创建自增字段的解决方法

    在MySQL数据库中,自增字段(AUTO_INCREMENT)是一种非常实用的功能,它允许系统在每次插入新记录时自动为该字段生成一个唯一的递增值。然而,有时用户可能会遇到无法创建自增字段的问题,这通常是由于特定的服务器...

    【总结】数据库自增字段的 3 种实现方式

    在MySQL中,自增字段通过`AUTO_INCREMENT`属性来实现。这个属性可以应用于整数类型的字段,确保每次插入新行时,该字段的值会自动递增。创建自增字段的示例代码如下: ```sql CREATE TABLE users ( user_id INT ...

    MySQL自增ID耗尽实例讲解

    MySQL中的自增ID是表中自动递增的主键字段,通常用于唯一标识表中的每一条记录。在MySQL中,自增ID默认的数据类型是INT,其最大值为`2^32-1`,即4,294,967,295。当超过这个上限时,尝试插入新的记录会导致自增ID不再...

    关于mysql自增id,你需要知道的

    1. 为什么建议将自增列设为主键? MySQL的InnoDB存储引擎使用主键作为聚集索引,这意味着数据记录直接存储在主键索引的叶子节点上。如果设置自增列为主键,新记录将按照递增顺序插入,这极大地优化了插入性能,因为...

    MySQL8自增主键变化.doc

    然后向自增主键表中添加了 4 条记录,表中的四条添加的记录的 id 字段值就分别为: 1、2、3、4。接下来,将表中的 id 为 4 的字段删除,然后,继续在表中添加一条记录,执行之后我们可以发现,此时自增主键的 ID 结果...

Global site tag (gtag.js) - Google Analytics