如何查询一个表ID的最大自增值(及如何重置)+Out of range value for column 'log_ID' 啥原因?+AUTO_INCREMENT 是表的最大ID 还是最大ID+1

zblog12个月前zblog问题解答42


1、Out of range value for column 'log_ID'  啥原因


错误 "Out of range value for column 'log_ID'" 通常发生在尝试向 MySQL 表的 log_ID 列插入一个超出该列数据类型范围的值时。log_ID 列可能是一个整数类型(如 INTTINYINTSMALLINTMEDIUMINTBIGINT),并且你尝试插入的值超过了该整数类型的最大值。



2、如何查询一个表ID的最大自增值

SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name数据库名字'
  AND TABLE_NAME = 'your_table_name表名字';


如 

image.pngimage.png


重置自增值

-- 首先找到当前的最大log_ID+1 (无数据则默认0+1)(虽然你已经删除了所有行,但出于安全考虑还是检查一下)
SELECT IFNULL(MAX(log_ID), 0) + 1 FROM your_table_name;
 
1-- 假设上面的查询返回了 NULL(因为没有行),或者你想要从某个特定的值开始
 -- 你可以使用以下命令来重置自增值
 ALTER TABLE your_table_name AUTO_INCREMENT = 1;  -- 或者设置为其他值,如上面查询结果加1

2 假设返回了最大值MAX(log_ID) 比如值是  23422 (应该小于  2147483648 否则越界了int(11)32位mysql有符号越界了)
  
   -- 你可以使用以下命令来重置自增值MAX(log_ID)+1 = 23422  +1 = 23423
   ALTER TABLE your_table_name AUTO_INCREMENT = 23423;


3、AUTO_INCREMENT 是表的最大ID 还是最大ID+1

AUTO_INCREMENT 在 MySQL 中并不代表表当前的最大 ID,而是代表下一个将要被插入行的自动递增 ID 值。一般来说(最大值无删除情况),AUTO_INCREMENT 的值是当前最大 ID 加 1。 

当你在一个表中定义了一个列为 AUTO_INCREMENT,MySQL 会为这个表维护一个计数器,该计数器用于生成下一个要插入行的唯一标识符。每次插入新行时,MySQL 会自动将该计数器的当前值赋给 AUTO_INCREMENT 列,然后将计数器递增。

因此,如果你查询 AUTO_INCREMENT 的当前值(通常通过查询 information_schema.TABLES 表中的 AUTO_INCREMENT 列来获取),你将得到下一个将要被插入的行的 ID 值,而不是当前表中的最大 ID 值。

举个例子,假设你有一个表 users,其中 id 列被定义为 AUTO_INCREMENT。如果当前表中最大的 id 值是 10,那么 AUTO_INCREMENT 的当前值将是 11(假设没有其他会话在插入新行)。如果你现在插入一个新行,不指定 id 列的值,MySQL 将自动为该行分配 id 值 11,并将 AUTO_INCREMENT 的值递增到 12。

需要注意的是,即使你删除了表中的所有行,AUTO_INCREMENT 的值也不会自动重置。如果你想要重置它,你需要使用 ALTER TABLE 语句来手动设置一个新的起始值。但是,在重置之前,请确保你了解这样做的后果,特别是如果表中已经有数据或可能有并发插入操作的话。


相关文章

error_reporting(0); php 关闭 PHP 的错误报告 display_errors memory_limit set_time_limit 内存限制+ 时间限制 +不显示错误

error_reporting(0); 是 PHP 中的一个配置指令,用于关闭 PHP 的错误报告功能。在 PHP 运行过程中,如果没有开启错误报告,那么当出现错误时,PHP 不会显示任何错...

(文件名特殊字符过滤)文件夹或文件名字中不能使用的特殊字符共有9个,过滤文件名中的特殊字符,并处理过滤后长度为0的情况

# 过滤文件名中的特殊字符,并处理过滤后长度为0的情况 function guiyi_txt_sanitize_file_name($fileName) {  &n...

zblog文章重复 判断文章是否存在

1、方法1 $article = $zbp->GetListType('Post', 'select * from...

Call to undefined function xnxf()zblog提示“可能的错误原因提示或500网络错误”时排查错误的方法

Call to undefined function xnxf()zblog提示“可能的错误原因提示或500网络错误”时排查错误的方法

很多时候都有可能遇到《错误提示》这类的提示,产生这个错误的原因一般来说都是服务端报错,如下图准备工作:1、进入后台,在网站设置的全局设置里,打开调试模式。2、如果不能进后台,那就用ftp连进网站,编辑...

在PHP中,DIRECTORY_SEPARATOR 是一个预定义的常量,用于表示当前操作系统的目录分隔符。例如,在Windows系统中,它是反斜杠 \;而在Unix/Linux系统中,它是正斜杠 /。

在PHP中,DIRECTORY_SEPARATOR 是一个预定义的常量,用于表示当前操作系统的目录分隔符。例如,在Windows系统中,它是反斜杠 \;而在Unix/Linux系统...

zblog查询数量sql num

$where = array('=', 'log_ID', 111); $num = $zbp-&...