You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Frappe/ERPNext中如何正确删除自定义doctype?迁移及数据库处理疑问

自定义DocType正确删除操作流程
  • 先确认目标DocType没有被其他文档、自定义字段、打印格式、工作流、客户端脚本、权限规则等资源关联依赖,存在依赖的情况下删除操作会直接失败
  • 登录Frappe后台,进入「DocType List」页面,找到要删除的自定义DocType进入详情页
  • 点击页面右上角「删除」按钮,按提示确认操作,系统会自动生成对应的删除迁移文件,存储到对应自定义应用的目录下
  • 本地开发环境执行bench migrate,确认本地已无该DocType、业务功能无异常后再执行后续同步操作
删除操作跨服务器同步方法
  • 本地操作完成后,将自定义应用的所有代码变更(包含自动生成的删除迁移文件)提交到代码仓库
  • 目标服务器拉取最新的应用代码后,直接执行bench migrate即可自动同步删除逻辑,不需要额外手动配置
删除后数据库表是否需要手动删除
  • 正常完成上述流程的情况下,执行bench migrate时Frappe会自动删除对应的数据库表(表名规则为tab{DocType名称})、关联字段记录、权限配置等所有存储资源,不需要手动处理
  • 注意:删除DocType前请务必备份数据库,避免误删业务数据无法恢复
执行bench migrate后DocType仍留存的排查方案
  • 检查目标服务器的自定义应用代码是否已更新到最新版本,确认被删除DocType的对应文件夹已经从{应用名}/doctype/目录下移除,若还存在说明本地删除时未生成有效删除记录,需要回到开发环境重新走删除流程
  • 执行bench doctor查看migrate过程的报错日志,若存在未清理的依赖关联,migrate会跳过删除操作,按照日志提示清理所有关联依赖后重新执行bench migrate即可
  • 确认删除逻辑执行完成后,执行bench clear-cache和bench clear-website-cache清理系统缓存,刷新页面后再校验是否还存在该DocType
  • 若以上操作都无效,可执行强制删除逻辑:运行bench console输入以下代码执行即可
frappe.delete_doc("DocType", "替换为你的DocType名称", force=True)
frappe.db.commit()

执行完成后重新跑一次bench migrate和清缓存操作即可。

内容的提问来源于stack exchange,提问作者Roshan888

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 19:39:04