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

zblog12个月前zblog问题解答43


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 语句来手动设置一个新的起始值。但是,在重置之前,请确保你了解这样做的后果,特别是如果表中已经有数据或可能有并发插入操作的话。


相关文章

ZBLOG 获取表字段名字

global $zbp;     $fieldID = $zbp->datainfo['Post'][&#...

php数组相加 数组合并    array_merge() 函数

php数组相加 数组合并 array_merge() 函数

在 PHP 中,当你说“数组相加”时,这通常指的是将两个数组合并成一个新的数组。但是,因为数组可以是索引数组(数字键)或关联数组(字符串键),所以合并数组的方法会有所不同。以下是几种合并数组的常见方法...

zblog忘记密码怎么办?Z-BlogPHP密码找回工具 Z-BlogPHP

zblog忘记密码怎么办?Z-BlogPHP密码找回工具 Z-BlogPHP

zblog忘记密码怎么办?不要百度瞎折腾,直接按照官方解决方案干。https://bbs.zblogcn.com/thread-83419.html更新密码成功,退出再登录下,解决 修改后权限是访客,...

可以下 chrome 版本对应的所有驱动 chrome驱动 chromedriver.exe

https://googlechromelabs.github.io/chrome-for-testing/#stable 从这里下载最新的 浏览器测试驱动 https://googlechrome...

base_convert 啥意思 PHP任意进制之间转换数字的函数

base_convert 是一个在任意进制之间转换数字的函数,通常用于编程语言中,如PHP。该函数接受三个参数:$number:要转换的数字,以字符串形式表示。$frombase:原始数字的...

php exlpode 字符串转数组函数(普通字符串 分割 + 正则表达式 分割)

============普通字符串 分割explode() 函数是 PHP 中的一个非常实用的字符串处理函数,它的作用是将一个字符串按照指定的分隔符分割成数组。这个函数经常用于处理 CSV 文件、UR...