mysql重置自增ID(織夢文章ID的重新排序)
作者: 鄭曉 分類: PHP 發(fā)布于: 2015-04-10 17:50 瀏覽:15,238 評論(27)
做網(wǎng)站時經(jīng)常會遇到由于刪除過文章而導(dǎo)致文章ID不連續(xù),由于文章ID字段在數(shù)據(jù)庫中的屬性一般是自動增長的,這是mysql中的一個記數(shù)器記錄的,在刪除記錄再新增時,自增的數(shù)值并不會占用你刪除的值,而是繼續(xù)在原基礎(chǔ)上++。
數(shù)據(jù)表中的不連續(xù)的記錄對于處女座來說是不能忍受的,所以下面來看看如何將已有數(shù)據(jù)的自增ID重新排列。
這里以織夢系統(tǒng)(dedecms)的文章表為例:假設(shè)要操作的表是dede_archives, 也就是織夢的內(nèi)容主表。
1.在要操作的表上新建一個字段,用于儲存當前的ID。alter table dede_archives add old_id int(10) not null;
2. 將當前的ID保存到這個新字段中。update dede_archives set old_id=id;
3. 刪除當前表的ID字段(自增主鍵)。alter table dede_archives drop id;
4. 重新建立ID字段,數(shù)據(jù)類型可按它原先的來。alter table dede_archives add id int(10) not null;
5. 設(shè)置一下這個新ID字段的屬性,設(shè)置為自增和主鍵。alter table dede_archives modify column id int(10) not null auto_increment, add primary key (id);
經(jīng)過上面這步,新的ID字段已經(jīng)重新排列了~
下面可以更新一下其它相關(guān)聯(lián)的表,這也就是創(chuàng)建那個old_id的作用了。update dede_archives as a, dede_副表 as b set b.aid=a.id where b.aid=a.old_id;
7. 完成!現(xiàn)在的文章ID已經(jīng)從1開始重新計數(shù)了~~
本文采用知識共享署名-非商業(yè)性使用 3.0 中國大陸許可協(xié)議進行許可,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。
本文永久鏈接: http://yjfs.org.cn/mysql-auto-increment-reset-dede-id.html
怎么能找到這個要操作的表呢?我不知道在哪里啊
你通過什么管理數(shù)據(jù)庫?phpmyadmin或navicat都很方便,你只是修改一條記錄不用這么麻煩, 登錄上數(shù)據(jù)庫把41這條的ID手動改成40,然后把表的自增計數(shù)器減1。
我看我網(wǎng)站前面的文章id也有被刪過的情況。那id不連貫應(yīng)該也沒什么事吧。我是今天第一天做seo這個工作,實習(xí)第一天,我把一篇寫錯了的文章直接刪掉了,看見id變得不連貫了。這個沒有什么影響吧
哈哈,這個ID連不連貫對網(wǎng)站沒任何影響,我以前也做過半年seo
沒什么特殊需求不用管這個id