在下面的說明中,您需要用正確的值替換[括號內]中的所有內容。備份之前進行測試。
如果您可以登錄通過命令行來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;ALTER table2 AUTO_INCREMENT = 0;...continued...
更改到數據庫中你想運行的命令:
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。WHERE table_name ='customer')' – pars 2010-08-29 17:32:01
由於您提到了M-M複製:是否真的需要觸摸AUTO_INCREMENT以使複製工作?我通常只需在my.cnf中設置自動增量增量和自動增量偏移值。 – faxi05 2010-08-29 17:34:58
@ faxi05是的,你是對的。我也有相同的配置工作正常。但是爲了在硬件故障後重新同步兩個數據庫,我不得不從一個數據庫轉儲所有數據並將其導入另一個數據庫。在這個過程中有一些錯誤。令人驚訝的是,沒有我做任何事情,他們都走了。 – pars 2010-08-29 20:38:40