怎么重置mysql的自增列AUTO

怎么重置mysql的自增列AUTO,第1张

1. 支持设置自增列的值

1

ALTER TABLE table_name AUTO_INCREMENT = 1

不过这种方式只能设置大于当前使用的值,不能设置小于等于当前已经使用的自增列的值。myisam如果设置小于等于,则自增列的值会自动设置为 当前最大值加1。innodb则不会改变。

2.通过TRUNCATE把自增列设置为0,从MySQL 5.0.13开始TRUNCATE就能重置自增列为0.myisam和innode都是如此。

TRUNCATE TABLE table_name

3.drop和create重建表方式重置自增列为0

DROP TABLE table_name

CREATE TABLE table_name { ... }

-->创建表时指定AUTO_INCREMENT自增值的初始值:

mysql>CREATE TABLE BIN_TBL (ID INT(5) PRIMARY KEY AUTO_INCREMENT)AUTO_INCREMENT=100

-->通过ALTER TABLE 修改初始值(但要大于表中的AUTO_INCREMENT自增值,否则设置无效):

mysql>ATLER TABLE BIN_TBL AUTO_INCREMENT=100

-->如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。

就是说如果表中原本有AUTO_INCREMENT属性值连续为78、100的值,但100这个数据被删除了,下此再添加数据的时候自增值为101,100被重用了。

即使在你将整个表中的所有数据delete清空后,之前的自增序列最大值还是会被重用。解决办法是:

使用ATLER TABLE BIN_TBL AUTO_INCREMENT=0重新设置自增初始值。

-----------------------------------------------------------------------------------------------------------------------------------------------

-->设置AUTO_INCREMENT_INCREMENT以及AUTO_INCREMENT_offset用户变量值:(重启MySQL之后,这些修改会恢复为初始值1)

mysql>SET auto_increment_increment=10 #自增量每次增加的值改为10,

mysql>SET auto_increment_offset=2#第一次加载数值时的偏移值的个位值

mysql>SHOW VARIABLES LIKE 'AUTO_INC%'#查看修改后变量的值

1.用sql工具执行show variables like‘%sql_mode%’

2.如果重启之后不成功, 注意检查你的my.ini 或者 my.cnf 有没改对,是不是有多个同名字的配置文件, 也有可能叫sql-mode 或sql_mode 注意中间的‘-’ 或 ‘_’

mysql的sql_mode合理设置,sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法 *** 作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题 。

ONLY_FULL_GROUP_BY,对于GROUP BY聚合 *** 作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO,该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8424473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存