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

Odoo 10应用无法识别现有PostgreSQL数据库的连接问题咨询

解决Odoo 10数据库选择器不显示现有数据库的问题

我之前在维护Odoo 10实例时碰到过几乎一模一样的问题——数据库在PostgreSQL里明明存在,但Odoo的数据库选择器就是看不到,只有新创建的库能正常显示。结合当时的排查和解决经验,给你几个实用的步骤:

1. 确认Odoo用户对现有数据库的访问权限

Odoo只会展示当前PostgreSQL用户有权限访问的数据库,默认Odoo使用的是odoo用户,你可以按以下步骤检查并修复权限:

  • 登录PostgreSQL后端:
    sudo -u postgres psql
    
  • 查看所有数据库的所有者信息:
    SELECT datname, pg_get_userbyid(datdba) FROM pg_database;
    
  • 如果目标数据库的所有者不是odoo,或者odoo没有连接权限,执行以下SQL(替换your_existing_db_name为你的数据库名):
    -- 切换到目标数据库
    \c your_existing_db_name;
    -- 授予连接权限
    GRANT CONNECT ON DATABASE your_existing_db_name TO odoo;
    -- 授予public schema的操作权限
    GRANT USAGE ON SCHEMA public TO odoo;
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO odoo;
    GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO odoo;
    

2. 检查Odoo配置文件的数据库过滤规则

Odoo的配置文件(通常是odoo.conf)里的db_filter参数可能设置了过滤正则,导致旧数据库被排除在外:

  • 打开配置文件,查找db_filter项,比如如果有db_filter = ^%h$,会只匹配和当前主机名一致的数据库。
  • 可以先临时注释掉这个参数(在前面加#),然后重启Odoo服务:
    sudo service odoo restart
    
  • 如果需要保留过滤规则,调整正则表达式包含你的现有数据库,比如:
    db_filter = ^(your_old_db|new_created_db)$
    

3. 修复数据库内的Odoo标识参数

Odoo依赖数据库内的ir_config_parameter表中的特定参数来识别数据库,如果这些参数缺失或损坏,就会导致数据库不显示:

  • 登录到目标数据库:
    sudo -u postgres psql your_existing_db_name
    
  • 检查关键参数是否存在:
    SELECT * FROM ir_config_parameter WHERE key IN ('database.uuid', 'web.base.url');
    
  • 如果缺失,手动插入(UUID可以用系统命令uuidgen生成,web.base.url替换为你的Odoo访问地址):
    INSERT INTO ir_config_parameter (key, value) VALUES ('database.uuid', '550e8400-e29b-41d4-a716-446655440000');
    INSERT INTO ir_config_parameter (key, value) VALUES ('web.base.url', 'http://your_ip:your_port');
    

4. 清理Odoo缓存并重启服务

Odoo可能缓存了旧的数据库列表,重启服务可以强制刷新:

  • 如果是用系统服务运行的Odoo:
    sudo service odoo restart
    
  • 如果是源码运行的:
    # 先停止现有进程,然后重新启动
    ./odoo-bin -c odoo.conf
    

5. 检查PostgreSQL的连接配置

确保PostgreSQL允许Odoo用户从本地连接,打开pg_hba.conf文件(路径通常是/etc/postgresql/9.5/main/,根据你的PostgreSQL版本调整),检查是否有以下配置:

local   all             odoo                                 trust
host    all             odoo             127.0.0.1/32        trust
host    all             odoo             ::1/128             trust

如果没有,添加后重启PostgreSQL服务:

sudo service postgresql restart

按这个顺序排查,大部分情况下权限或配置文件的问题就能解决。如果还是不行,可以检查Odoo的日志文件(通常在/var/log/odoo/),看看有没有具体的错误提示,能更快定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:38:10