MySQL 設置AUTO_INCREMENT 無效的問題解決
一、修改 AUTO_INCREMENT 的值。
執(zhí)行 sql 如下,“tablename” 為數(shù)據(jù)表名稱。
注意:修改的 auto_increment 的值得大于現(xiàn)有主鍵的最大值。否則,語句不報錯,但不會生效(這里需要特別注意,我之前一直沒成功是因為表里有一個很大的值20284665,需要更改到數(shù)據(jù)表最大數(shù)量值)。
可以嘗試-目錄是重置數(shù)據(jù)的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";
三、分析數(shù)據(jù)表。重新分析一下數(shù)據(jù)表即可,執(zhí)行如下 sql。
analyze table tablename;
分析數(shù)據(jù)表之后,在執(zhí)行第二步中的查詢即可看到 auto_increment 的值修改成功。
快速設置Mysql的auto_increment參數(shù)
在使用mysql時,在導入數(shù)據(jù)后經(jīng)常需要修改auto_increment參數(shù),如果數(shù)據(jù)比較多時,執(zhí)行效果非常緩慢。在3500萬數(shù)據(jù)表上修改auto_increment參數(shù),大概需要10分17秒(本地mac機器上測試,在服務器稍微好點,但是也很慢),通過摸索,發(fā)現(xiàn)另外一個方法可以巧妙的設置auto_increment參數(shù)。
以表A為例,說明如何設置auto_increment 的值為3500萬。
1、利用insert語句修改auto_increment值,再利用回滾去掉插入數(shù)據(jù),但是修改后的auto_increment值不會被回滾
begin work; insert into A(id,field) values (34999999,'test'); rollback;
2、查看修改后的值
show tables
到此這篇關于MySQL 設置AUTO_INCREMENT 無效的問題解決的文章就介紹到這了,更多相關MySQL AUTO_INCREMENT 無效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL千萬數(shù)據(jù)量深分頁優(yōu)化流程(拒絕線上故障)
這篇文章主要為大家介紹了MySQL千萬數(shù)據(jù)量深分頁優(yōu)化拒絕線上故障,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05Mysql通過explain分析定位數(shù)據(jù)庫性能問題
這篇文章主要介紹了Mysql通過explain分析定位數(shù)據(jù)庫性能問題,明確SQL在Mysql中實際的執(zhí)行過程是怎樣的,如果查詢字段沒有索引則增加索引,如果有索引就要分析為什么沒有用到索引,本文詳細講解,需要的朋友可以參考下2023-01-01Linux下安裝mysql的方式(yum和源碼編譯兩種方式)
這里介紹Linux下兩種安裝mysql的方式:yum安裝和源碼編譯安裝。需要的朋友可以參考下2018-02-02