删除特定模块文件夹前Odoo 10报Error 404,替换模块后出现500错误求助
解决Odoo 10删除旧模块后出现的500错误与资源加载问题
这种情况我之前处理过好几次,核心问题就是模块直接删除后,数据库残留的旧关联记录和前端/服务器缓存冲突导致的,咱们一步步来排查解决:
1. 清理数据库中残留的无效菜单记录
你遇到的GET .../web/image/ir.ui.menu/443/web_icon_data 500错误,本质是数据库里ID为443的菜单记录,还关联着你已经删除的那个Odoo 8模块,但模块文件已经不存在,Odoo找不到对应的图标资源了。
解决步骤:
- 用pgAdmin或者Odoo数据库管理工具连接到你的数据库
- 先确认这条菜单记录所属的模块:
SELECT name, module FROM ir_ui_menu WHERE id = 443; - 如果查询结果显示的模块就是你删掉的那个,直接删除这条记录:
DELETE FROM ir_ui_menu WHERE id = 443; - 额外检查
ir_module_module表,看看有没有该模块的残留记录,有的话一并删除:DELETE FROM ir_module_module WHERE name = '你的旧模块名称';
2. 彻底刷新静态资源缓存
fontawesome-webfont.woff2加载失败和之前的404问题,基本是缓存搞的鬼——不管是浏览器缓存,还是Odoo服务器端的静态资源映射缓存,都还残留着旧模块的引用。
解决步骤:
- 浏览器端:打开开发者工具(F12),切换到
Network标签,勾选Disable cache选项,然后按Ctrl+Shift+R强制刷新页面 - 服务器端:重启Odoo服务时加上
--update all参数,强制更新所有模块的静态资源映射,比如:
也可以手动清理Odoo数据目录下的./odoo-bin --update all -c your_odoo_config.conffilestore缓存文件夹(记得先停服务)。
3. 清理其他关联表的残留记录
有些模块删除后,ir_model_data、ir_actions等表还会残留关联记录,可能导致后续隐性问题:
- 执行下面的SQL查询,删除属于旧模块的所有数据记录:
DELETE FROM ir_model_data WHERE module = '你的旧模块名称'; - 重启Odoo服务,再次访问系统,验证错误是否消失。
后续注意事项
以后替换模块时,千万不要直接删除文件夹,正确流程是:先在Odoo后台的「应用」菜单里找到该模块,点击「卸载」,等卸载完成后再删除对应的模块文件夹,这样数据库里的关联记录会被Odoo自动清理,就不会出现这类问题了。
内容的提问来源于stack exchange,提问作者xakal
相关产品推荐
相关产品推荐

