MySql:AUTO_INCREMENT在运行大约一个月后从某些表中丢失。
初始:(显示创建表Foo)
CREATE TABLE `Foo` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`type` tinyint(2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8
一个月后:
CREATE TABLE `Foo` (
`id` bigint(20) NOT NULL,
`name` varchar(10) NOT NULL,
`type` tinyint(2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
缺少AUTO_INCREMENT。原因是什么?
Mysql服务器版本:5.6.25,Linux操作系统
3条答案
按热度按时间sulc1iza1#
一定是有人改变了它。这种改变不是自发发生的。
我可以自己重现这个变化:
现在该列显示它是BIGINT而不是AUTO_INCREMENT。
每次MODIFY COLUMN或CHANGE COLUMN时,必须重复所有列选项,如NOT NULL、AUTO_INCREMENT和DEFAULT,否则它将恢复为默认值(即 not auto-increment)。
所以我认为这表明有人执行了ALTER TABLE,但不记得包含AUTO_INCREMENT列选项。
b1zrtrql2#
只是一个想法。
如果您有二进制日志,您可能会在日志上看到alter查询以及它的运行时间。:)检查二进制日志是否由启用
如果启用了二进制日志,请查找可能执行查询的时间段,然后使用mysqlbinlog帮助查找。
如果没有启用二进制日志,运气不好--正如Bill Karwin之前的帖子所暗示的那样,mysql不会自己更改它--一定是有人更改了它。
yfjy0ee73#
我也遇到了同样的情况。没有做任何涉及数据库更改的工作。没有其他人拥有数据库编辑权限。突然我收到用户投诉,AI在一个已经成功运行了7年/10 k插入的领域被关闭。Aurora(MySQL 5.6的AWS克隆)不是每个SE的MySQL。
至少这是一个面向管理层的表。害怕这种情况发生在客户事务表上。