如何修改dede文章ID?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

我强烈建议你不要直接手动修改数据库,而是采用更安全、更可靠的方法,以下是几种不同场景下的解决方案,请根据你的实际情况选择。

dede 修改文章id
(图片来源网络,侵删)

⚠️ 重要前提:备份!备份!备份!

在进行任何涉及数据库修改的操作之前,请务必备份你的整个网站,包括:

  1. 网站程序文件
  2. 完整数据库

这样即使操作失败,你也可以轻松恢复。


修改单篇文章或少量文章的 ID(最推荐的方法)

这个方法的核心是利用 DedeCMS 的“复制文章”功能,它会自动生成一个新的 ID,然后你删除旧文章即可,这是最安全、最不容易出错的方法。

操作步骤:

dede 修改文章id
(图片来源网络,侵删)
  1. 登录后台:进入你的 DedeCMS 后台管理界面。

  2. 找到文章:在“核心” -> “内容发布” -> “普通文章” 或 “所有文档” 中,找到你想要修改 ID 的那篇文章。

  3. 复制文章

    • 勾选你要修改的文章。
    • 点击顶部或底部的“复制”按钮。
  4. 设置新文章

    dede 修改文章id
    (图片来源网络,侵删)
    • 在弹出的页面中,你可以选择“保持原栏目”或移动到其他栏目。
    • 你可以修改标题,以防重复。
    • 保持默认即可。
    • 点击“确定”。
  5. 获取新 ID

    • 复制成功后,系统会提示你操作成功,并通常会让你跳转到新文章的编辑页面。
    • 记下这个新文章的 ID,你也可以在“所有文档”列表中找到它。
  6. 删除旧文章

    • 回到“所有文档”列表,找到并勾选原来的那篇旧文章
    • 点击“删除”按钮。
  7. 完成

    你的文章内容已经成功转移到了一个新的 ID 上,网站上的链接和图片路径等都会自动更新为新 ID 的,不会出现错误。


需要精确修改 ID(想让某篇文章的 ID 变为 10000)

如果你确实需要将某篇文章的 ID 修改为一个特定的、未被使用的数字,那么就必须操作数据库。请务必小心!

操作步骤:

  1. 准备工作

    • 确定新 ID:先确认你想要设置的新 ID (10000) 在 dede_archives 表中是不存在的,否则会造成冲突。
    • 记录旧 ID:记下你要修改的文章的当前 ID (123)。
  2. 修改主表 dede_archives

    • 进入你的网站数据库管理工具(如 phpMyAdmin)。
    • 找到 dede_archives 表(这是文章的主表)。
    • 执行以下 SQL 语句,将旧 ID 123 改为新 ID 10000
      UPDATE dede_archives SET id = 10000 WHERE id = 123;
    • 执行后,检查 dede_archives 表,确认 id=123 的记录已经变成了 id=10000
  3. 修改附加表 dede_addonarticle

    • 文章的详细内容(如 body 字段)存储在附加表中,通常是 dede_addonarticle
    • 你必须同步修改这个表中的 aid 字段,因为它与主表的 id 是关联的。
    • 执行以下 SQL 语句:
      UPDATE dede_addonarticle SET aid = 10000 WHERE aid = 123;
  4. (极重要!)检查并修复关联数据

    • 修改 idaid 后,很多其他表中的关联数据会失效,导致文章打不开、评论丢失等,你需要手动修复这些关联。
    • dede_arctiny(用于列表页,性能优化表):
      UPDATE dede_arctiny SET id = 10000, aid = 10000 WHERE id = 123;
    • dede_feedback(评论表):
      UPDATE dede_feedback SET aid = 10000 WHERE aid = 123;
    • dede_taglist(标签表):
      UPDATE dede_taglist SET aid = 10000 WHERE aid = 123;
    • dede_arctag(文章标签关联表):
      UPDATE dede_arctag SET aid = 10000 WHERE aid = 123;
    • dede_member_stow(用户收藏表):
      UPDATE dede_member_stow SET aid = 10000 WHERE aid = 123;
    • dede_search_index(搜索索引表):
      UPDATE dede_search_index SET id = 10000, aid = 10000 WHERE aid = 123;
  5. 检查静态文件

    • 如果你的网站开启了“使用HTML静态页”,那么旧 ID 对应的静态文件(如 /html/123/123.html)仍然存在。
    • 你需要删除旧的静态文件,或者等待下次生成时被覆盖。
    • 可以进入后台的“生成” -> “HTML更新” -> “指定文档更新”,输入新 ID 10000 来重新生成它的静态页面。

批量修改文章 ID(清空 ID 从 1 开始)

这种操作通常是为了清理数据库碎片,或者在做数据迁移时,这是一个高风险操作,建议只在测试环境充分验证后再在生产环境执行。

操作步骤:

  1. 清空自增 ID

    • 在 phpMyAdmin 中,对 dede_archives 表执行以下 SQL,将其自增 ID 重置为 1(前提是表已清空或你想重新开始):
      ALTER TABLE dede_archives AUTO_INCREMENT = 1;
    • dede_addonarticle 等其他相关附加表也执行类似操作。
  2. 使用脚本批量重建

    • 手动批量修改 ID 几乎是不可能的,因为 ID 之间有关联。
    • 一个相对安全的方法是:清空所有文章数据表dede_archives, dede_addonarticle, dede_arctiny 等),然后通过 DedeCMS 后台的“内容导入”功能,将你整理好的文章数据重新导入一遍,导入时,DedeCMS 会自动从 1 开始分配新的、连续的 ID。

总结与建议

场景 推荐方法 优点 缺点
修改单篇/少量文章 复制文章法 绝对安全,系统自动处理所有关联,无副作用。 步骤稍多,需要手动删除旧文章。
精确修改指定 ID 数据库修改法 可以精确控制 ID 数字。 风险极高,容易遗漏关联表,导致网站功能异常。
批量重置 ID 清空+导入法 从根本上解决 ID 不连续问题。 风险高,会丢失所有现有文章数据,需要提前备份好文章内容。

对于 99% 请使用【场景一:复制文章法】,这是官方设计思路所支持的最安全、最可靠的方式,只有在非常特殊且清楚所有风险的情况下,才考虑使用数据库操作方法。

-- 展开阅读全文 --
头像
织梦js实现地区联动
« 上一篇 今天
dede为何无法获得主键?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]