在下面的说明中,您需要将[方括号]中的所有内容替换为正确的值。在尝试之前备份。如果您可以通过命令行作为root登录到mysql,那么可以执行以下操作来重置所有表上的auto_increment。首先,我们将构建要运行的查询:请制作数据库备份:
mysqldump -u [uname] -p [dbname] | gzip -9 > [backupfile.sql.gz]
登录:
mysql -u root -p
将 group_concat_max_length 的值提高到更高的数值,这样我们的查询列表就不会被截断:
SET group_concat_max_len=100000
使用以下内容创建我们的查询列表:
SELECT GROUP_CONCAT(CONCAT("ALTER TABLE ", table_name, " AUTO_INCREMENT = 0") SEPARATOR ";") FROM information_schema.tables WHERE table_schema = "[DATABASENAME]";
然后您将收到一长串MySQL查询,后面跟着一堆破折号。将查询字符串复制到剪贴板中,它看起来类似于:
ALTER table1 AUTO_INCREMENT = 0
切换到您想要运行命令的数据库:
USE [DATABASENAME];
然后粘贴在剪贴板上的字符串,按回车键运行它。这应该在您的数据库中的每个表上运行alter。
出了问题?从备份中恢复,运行以下命令之前确保退出mysql(只需键入exit;
即可)
gzip -d < [backupfile.sql.gz] | mysql -u [uname] -p [dbname]
使用这些命令造成的任何损害将不由我负责,风险自负。
ALTER TABLE my_db.customer auto_increment = ( SELECT auto_increment FROM information_schema.tables WHERE table_name = 'customer' )
- pars