有没有办法为数据库中的所有表运行这个或类似的AUTO_INCREMENT命令?
ALTER TABLE tablename AUTO_INCREMENT = 1
答案 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;"