當前位置:博客首頁>>PHP >> 閱讀正文

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

mysql重置自增ID(織夢文章ID的重新排序):目前有27 條留言

用戶評論頭像 小麥子發(fā)表于 2018年01月04日 18:31[回復(fù)]

怎么能找到這個要操作的表呢?我不知道在哪里啊

    用戶評論頭像 鄭曉發(fā)表于 2018年01月04日 18:34[回復(fù)]

    你通過什么管理數(shù)據(jù)庫?phpmyadmin或navicat都很方便,你只是修改一條記錄不用這么麻煩, 登錄上數(shù)據(jù)庫把41這條的ID手動改成40,然后把表的自增計數(shù)器減1。

      用戶評論頭像 小麥子發(fā)表于 2018年01月04日 19:33[回復(fù)]

      我看我網(wǎng)站前面的文章id也有被刪過的情況。那id不連貫應(yīng)該也沒什么事吧。我是今天第一天做seo這個工作,實習(xí)第一天,我把一篇寫錯了的文章直接刪掉了,看見id變得不連貫了。這個沒有什么影響吧

        用戶評論頭像 鄭曉發(fā)表于 2018年01月04日 20:03[回復(fù)]

        哈哈,這個ID連不連貫對網(wǎng)站沒任何影響,我以前也做過半年seo

        用戶評論頭像 鄭曉發(fā)表于 2018年01月04日 20:07[回復(fù)]

        沒什么特殊需求不用管這個id

用戶評論頭像 森林之家發(fā)表于 2017年06月05日 00:16[回復(fù)]

博主果然強大這個東西我找了好久!

用戶評論頭像 壞壞的考拉發(fā)表于 2017年02月06日 18:01[回復(fù)]

學(xué)習(xí)

用戶評論頭像 放羊倌發(fā)表于 2016年12月21日 16:39[回復(fù)]

這個是目前我看到的最完整最正確的方法了!贊一個!感謝鄭曉!

用戶評論頭像 739028634發(fā)表于 2015年07月03日 11:08[回復(fù)]

您這評論好像有點問題,提交后都沒個提示信息。

    用戶評論頭像 鄭曉發(fā)表于 2015年07月03日 13:56[回復(fù)]

    你好, 是你第一次在這里發(fā)評論,系統(tǒng)暫時將您加入了審核隊列中。現(xiàn)在可以了。

用戶評論頭像 739028634發(fā)表于 2015年07月03日 11:04[回復(fù)]

update dede_archives as a, dede_副表 as b set b.aid=a.id where b.aid=a.old_id;
執(zhí)行最后一步的出現(xiàn)這個
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\xE5\x89\xAF\xE8\xA1\xA8 as b set b.aid=a.id where b.aid=a.old_id’ at line 1

    用戶評論頭像 鄭曉發(fā)表于 2015年07月03日 13:36[回復(fù)]

    你好, 我這個sql中dede_副表 需要替換成你自己要操作的表名。。。

      用戶評論頭像 739028634發(fā)表于 2015年07月03日 14:24[回復(fù)]

      副表是什么呢…
      是隨便建的表嗎 ??

        用戶評論頭像 鄭曉發(fā)表于 2015年07月03日 14:26[回復(fù)]

        比如普通文章模型的話, 它的副表應(yīng)該是叫”dede_addonarticle”

          用戶評論頭像 739028634發(fā)表于 2015年07月03日 15:03[回復(fù)]

          那要重新排序整個文章類型的id是怎么弄呢?
          就只要把最后一步,也就是你說的把“副表”改成“addonarticle”嗎,這就是完整的步驟嗎?
          我在其他教程上看到織夢的文章好像有三個關(guān)聯(lián)的表啊
          比如這個
          “1、需要修改dede_archives表、dede_arctiny表、dede_addonarticle表所對應(yīng)的文章前面的ID,才能真正實現(xiàn)修改ID;”

            用戶評論頭像 鄭曉發(fā)表于 2015年07月03日 15:11[回復(fù)]

            呃,對,我這里最后是掉了更新arctiny表。 這篇文章實現(xiàn)的就是重置主文檔表。 具體文章類型的ID不能自增,因為它的id 只是一個外鍵,關(guān)聯(lián)到主表(archives)。

              用戶評論頭像 739028634發(fā)表于 2015年07月03日 15:22[回復(fù)]

              額….什么意思呢
              不能完整實現(xiàn)嗎 ??

用戶評論頭像 739028634發(fā)表于 2015年07月03日 10:54[回復(fù)]

你好,謝謝分享!
請問下,讓重新發(fā)布的文章的ID從間斷的地方開始可以嗎?(ID中有一大部分刪除了,新發(fā)布的文章的ID能不能填充呢?)

    用戶評論頭像 鄭曉發(fā)表于 2015年07月03日 13:47[回復(fù)]

    不好實現(xiàn)。

      用戶評論頭像 739028634發(fā)表于 2015年07月03日 14:24[回復(fù)]

      好吧,謝謝。

用戶評論頭像 刺球發(fā)表于 2015年05月10日 14:00[回復(fù)]

?? 刺球網(wǎng)絡(luò)安全社區(qū)這個能用嘛?

用戶評論頭像 飛之夢發(fā)表于 2015年04月30日 11:33[回復(fù)]

這個東西有什么用呢?剛用dede沒多久,不太懂呢。

    用戶評論頭像 鄭曉發(fā)表于 2015年04月30日 12:37[回復(fù)]

    這是給處女座用的,其實沒什么實際用途。。。。

用戶評論頭像 情侶網(wǎng)名發(fā)表于 2015年04月26日 16:34[回復(fù)]

高手你好,你有dede的手機模板嗎

發(fā)表評論

change vcode