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

zblog10个月前zblog问题解答32


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


相关文章

php 大写转小写 小写转大写 大小写转换 例子 strtolower strtoupper

在 PHP 中,可以使用内置的函数来转换字符串的大小写。以下是几个例子:大写转小写:使用 strtolower() 函数将大写字母转换为小写字母。   <...

php 把\u8D8A\u8D70\u8D8A\u5E26\u52B2\ 转为中文 或正常字符

为了将 Unicode 编码转换为正常字符,你可以使用 json_decode 来处理这个字符串,但需要先将它包装成一个有效的 JSON 格式字符串。具体来说,可以将你的字符串放在双引号内,并确保它是...

zblog常用简写

print_r($zbp->currenturl); # 当前url 路径 访问 www.zblog.cn/post/123.html 就是 ...

http?https?相对协议? // 相对协议  相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。

http?https?相对协议? // 相对协议 相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。

相对协议的主要作用是根据当前页面的协议(HTTP或HTTPS)来自动选择使用哪个协议来加载资源。当你在HTML中使用一个以//开头的URL时,浏览器会检查当前页面是通过HTTP还是HTTPS加载的,并...

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

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