Odoo导入错误(UNALTERABLE_COUNTRIES)及本地数据库异常求助
解决Odoo选择新数据库后出现的内部服务器错误及后续功能异常问题
看来你碰到了Odoo选新数据库后的连锁问题,先别慌,这种“首次报错刷新后恢复但功能瘸腿”的情况,十有八九是依赖包没装全或者版本不对搞的鬼。下面给你一套完整的解决方案,从依赖列表到排查步骤都有:
一、Odoo 14/15/16 完整依赖包列表(Python + 系统依赖)
系统层面依赖(Ubuntu/Debian为例)
先把底层系统依赖装齐,这些是Odoo运行的基础,缺一个都可能出奇怪的问题:
sudo apt update && sudo apt install -y \ build-essential \ python3-dev \ python3-pip \ python3-venv \ libpq-dev \ libxml2-dev \ libxslt1-dev \ libldap2-dev \ libsasl2-dev \ libssl-dev \ libjpeg-dev \ zlib1g-dev \ libpng-dev \ libwebp-dev \ libtiff5-dev \ libopenjp2-7-dev \ poppler-utils \ wkhtmltopdf
划重点:
wkhtmltopdf是报表生成的核心,版本一定要匹配Odoo要求——比如Odoo16推荐用0.12.6版本,版本不对直接会导致报表编辑/生成失败。
Python依赖(通过pip安装)
建议用虚拟环境隔离依赖,避免和系统包冲突。如果是用官方源码,直接用自带的requirements.txt最省心;要是手动装,就用下面这个核心列表:
# 先把pip更到最新 pip3 install --upgrade pip # 安装核心依赖 pip3 install \ setuptools \ wheel \ psycopg2-binary>=2.8.6 \ psutil>=5.8.0 \ python-dateutil>=2.8.1 \ pytz>=2021.1 \ jinja2>=2.11.3 \ lxml>=4.6.3 \ decorator>=4.4.2 \ requests>=2.25.1 \ passlib>=1.7.4 \ pillow>=8.3.2 \ reportlab>=3.5.68 \ pyopenssl>=20.0.1 \ cryptography>=3.4.7 \ werkzeug>=2.0.1 \ babel>=2.9.1 \ python-stdnum>=1.16 \ python-slugify>=5.0.2 \ markdown>=3.3.4 \ xlwt>=1.3.0 \ xlsxwriter>=1.4.4 \ openpyxl>=3.0.9 \ pyparsing>=2.4.7 \ pydot>=1.4.2 \ geopy>=2.2.0 \ phonenumbers>=8.12.34 \ vobject>=0.9.6.1 \ qrcode>=6.1 \ pypdf2>=1.26.0 \ beautifulsoup4>=4.9.3 \ soupsieve>=2.2.1 \ html2text>=2020.1.16 \ python3-openid>=3.2.0 \ jwt>=2.3.0 \ freezegun>=1.1.0 \ psycogreen>=1.0.1 \ watchdog>=2.1.6
源码用户直接跑
pip3 install -r requirements.txt就行,自动匹配对应版本,不用自己记。
二、针对性排查与修复步骤
检查依赖是否真的装全了
用这个命令快速找出缺失的包:python3 -c "import pkg_resources; requirements = open('requirements.txt').read().splitlines(); [print(req) for req in requirements if not pkg_resources.require(req)]"把输出的缺失包用
pip3 install装上就好。核实数据库用户权限
有时候内部服务器错误是数据库用户没权限创建新库导致的,登录PostgreSQL执行:ALTER ROLE 你的Odoo数据库用户名 WITH CREATEDB LOGIN;替换成你实际用的数据库用户名,确保它有创建数据库和登录的权限。
清掉Odoo缓存
刷新后功能异常大概率是缓存残留搞的鬼,删掉这两个目录:rm -rf ~/.local/share/Odoo/sessions/ rm -rf 你的Odoo数据目录/filestore/*然后重启Odoo服务,应该能解决表单看不了代码的问题。
看完整错误日志定位问题
你给的日志片段太短了,建议开debug模式启动Odoo,抓完整错误栈:./odoo-bin --debug --log-level=debug这样能精准找到根因——比如报表异常就查
wkhtmltopdf,表单异常就查lxml或者前端相关依赖。
三、额外提醒
- 如果是装了自定义模块才出的问题,去模块的
__manifest__.py里看看depends有没有漏写核心模块(比如web、base)。 - 一定要用虚拟环境!用虚拟环境!用虚拟环境!重要的事情说三遍,避免系统全局包版本冲突坑死你。
内容的提问来源于stack exchange,提问作者vbt
相关产品推荐
相关产品推荐

