如何在MySQL中为数据库中的所有表重置AUTO_INCREMENT?

时间:2017-06-08 08:17:07

标签: mysql

有没有办法为数据库中的所有表运行这个或类似的AUTO_INCREMENT命令?

ALTER TABLE tablename AUTO_INCREMENT = 1

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT GROUP_CONCAT(t.query SEPARATOR '; ')
FROM
(
    SELECT CONCAT('ALTER TABLE ', a.table_name,
                  ' AUTO_INCREMENT = 1') AS query,
        '1' AS id
    FROM information_schema.tables a
    WHERE a.table_schema = 'tablename'
) t
GROUP BY t.id

这将为每个表生成一个查询,但不会运行查询。

结果将如下所示:

ALTER TABLE tablename1 AUTO_INCREMENT = 1; ALTER TABLE tablename2 AUTO_INCREMENT = 1; ALTER TABLE tablename3 AUTO_INCREMENT = 1;

答案 1 :(得分:1)

您可以使用xargs(替换DB_NAME):

mysql -Nsr -e "SELECT t.table_name FROM INFORMATION_SCHEMA.TABLES t WHERE t.table_schema = 'DB_NAME' AND table_type = 'BASE TABLE'" | xargs -I {} mysql DB_NAME -e "ALTER TABLE {} AUTO_INCREMENT = 1;"