MySQL 設置AUTO_INCREMENT 無效的問題解決
一、修改 AUTO_INCREMENT 的值。
執(zhí)行 sql 如下,“tablename” 為數據表名稱。
注意:修改的 auto_increment 的值得大于現(xiàn)有主鍵的最大值。否則,語句不報錯,但不會生效(這里需要特別注意,我之前一直沒成功是因為表里有一個很大的值20284665,需要更改到數據表最大數量值)。
可以嘗試-目錄是重置數據的id(執(zhí)行前備份CREATE TABLE tablename_back AS SELECT * FROM tablename;)
SET @row_number = 0;
UPDATE tablename SET id = (@row_number:=@row_number + 1);
這種方法線上環(huán)境慎用,開放環(huán)境需進行多次驗證
ALTER TABLE tablename AUTO_INCREMENT=1001;
二、修改后查詢一下 AUTO_INCREMENT 的值,執(zhí)行下面 sql 可查詢(結果發(fā)現(xiàn)還是修改之前的值)
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name="tablename";
三、分析數據表。重新分析一下數據表即可,執(zhí)行如下 sql。
analyze table tablename;
分析數據表之后,在執(zhí)行第二步中的查詢即可看到 auto_increment 的值修改成功。
快速設置Mysql的auto_increment參數
在使用mysql時,在導入數據后經常需要修改auto_increment參數,如果數據比較多時,執(zhí)行效果非常緩慢。在3500萬數據表上修改auto_increment參數,大概需要10分17秒(本地mac機器上測試,在服務器稍微好點,但是也很慢),通過摸索,發(fā)現(xiàn)另外一個方法可以巧妙的設置auto_increment參數。
以表A為例,說明如何設置auto_increment 的值為3500萬。
1、利用insert語句修改auto_increment值,再利用回滾去掉插入數據,但是修改后的auto_increment值不會被回滾
begin work; insert into A(id,field) values (34999999,'test'); rollback;
2、查看修改后的值
show tables
到此這篇關于MySQL 設置AUTO_INCREMENT 無效的問題解決的文章就介紹到這了,更多相關MySQL AUTO_INCREMENT 無效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows Server 2003下修改MySQL 5.5數據庫data目錄
這篇文章主要介紹了Windows Server 2003下修改MySQL 5.5數據庫data目錄,需要的朋友可以參考下2016-04-04

