除了使用information_schema.tables来记录带有auto_increment选项的所有列外,没有自然的方法。
您可以按以下方式收集这些列:
CREATE TABLE mysql.my_autoinc ENGINE=MyISAM
SELECT table_schema,table_name,auto_increment
FROM information_schema.tables WHERE 1=2;
ALTER TABLE mysql.my_autoinc ADD PRIMARY KEY (table_schema,table_name);
INSERT INTO mysql.my_autoinc
SELECT table_schema,table_name,auto_increment
FROM information_schema.tables WHERE auto_increment IS NOT NULL;
创建一个脚本,将重置auto_increment值
AUTOINC_SCRIPT=/var/lib/mysql/ResetAutoInc.sql
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' AUTO_INCREMENT=',auto_increment,';') FROM mysql.my_autoinc" > ${AUTOINC_SCRIPT}
然后,您可以执行以下两项操作之一:
选项#1:启动后手动运行脚本
mysql> source /var/lib/mysql/ResetAutoInc.sql
选项#2:在允许连接之前,让mysqld执行脚本
您将必须添加此选项
[mysqld]
init-file=/var/lib/mysql/ResetAutoInc.sql
这样,每次重新启动mysql时,都会在开始时执行此脚本。您必须记住在执行计划的mysql重新启动之前,重新生成/var/lib/mysql/ResetAutoInc.sql。