Docker中重启Odoo报psycopg2.errors.UndefinedColumn错误如何解决
问题根因
该报错由website核心模块的数据库迁移流程未执行完成导致:sequence是Odoo原生website模块的内置系统字段,必须通过官方的模块升级流程自动创建,手动修改数据库表结构会跳过配套的依赖迁移逻辑,必然会触发其他关联表的连锁报错。
修复步骤
- 先停止当前异常的Odoo容器:
docker stop <你的Odoo容器名称>
- 操作前先备份数据库,避免数据丢失:
docker exec -t <你的PostgreSQL容器名称> pg_dump -U <数据库用户名> <目标Odoo数据库名> > odoo_db_backup_$(date +%Y%m%d).sql
- 临时启动Odoo容器执行模块升级操作,升级完成后自动停止:
docker run --rm \ -v <你的Odoo数据卷路径>:/var/lib/odoo \ -v <你的自定义模块存放路径>:/mnt/extra-addons \ --link <你的PostgreSQL容器名称>:db \ odoo:<你当前使用的Odoo版本号> \ -u website -d <目标Odoo数据库名> \ --stop-after-init
说明:参数-u website指定只升级website核心模块,如果你确认所有自定义模块无兼容性问题,也可以替换为-u all升级全部模块。
- 升级无报错后,正常启动Odoo容器即可:
docker start <你的Odoo容器名称>
注意事项
- 所有Odoo系统表的结构变更都必须通过模块升级流程执行,禁止直接手动修改数据库字段,否则会出现模块版本和表结构不匹配的长期兼容性问题
- 如果升级过程中出现自定义模块报错,先临时移除有问题的自定义模块,完成核心模块升级后再单独调试自定义模块的兼容性
内容的提问来源于stack exchange,提问作者Rihab Bennour
相关产品推荐
相关产品推荐

