odoo 12 psycopg2.OperationalError:无法将主机名“db”转换为地址
Posted
技术标签:
【中文标题】odoo 12 psycopg2.OperationalError:无法将主机名“db”转换为地址【英文标题】:odoo 12 psycopg2.OperationalError: could not translate host name "db" to address 【发布时间】:2020-01-16 22:47:09 【问题描述】:受影响的版本:
odoo 12,postgresql 10
重现步骤:
码头集装箱 odoo 容器几个月来工作得很好,但是在尝试升级 odoo 版本之后.. 我收到以下错误..
Postgresql 容器端口:5432 两个容器 [odoo 和 Postgresql] 都加入了同一个网络psycopg2.OperationalError: 无法将主机名“db”转换为地址
当前行为:
内部服务器错误 服务器遇到内部错误,无法完成您的请求。要么是服务器超载,要么是应用程序出错。
日志:
文件“/usr/lib/python3/dist-packages/odoo/sql_db.py”,第 171 行,在 init 中,self._cnx = pool.borrow(dsn),文件“/ usr/lib/python3/dist-packages/odoo/sql_db.py”,第 540 行,在 _locked 中,返回 fun(self, *args, **kwargs) ,文件“/usr/lib/python3/dist-packages/odoo /sql_db.py”,第 608 行,借用,**connection_info),文件“/usr/lib/python3/dist-packages/psycopg2/init.py”,第 130 行,在连接中, conn = _connect(dsn, connection_factory=connection_factory, **kwasync) ,psycopg2.OperationalError: could not translate host name "db" to address: Name or service not known - - - ,2019-09-15 15:01:26,057 1信息? odoo.service.server: 启动关机,2019-09-15 15:01:26,058 1 INFO ? odoo.service.server:再次按 CTRL-C 或发送第二个信号以强制关闭。 ,2019-09-15 15:01:30,959 1 信息? odoo:Odoo 版本 12.0-20190816 ,2019-09-15 15:01:30,960 1 信息? odoo:使用 /etc/odoo/odoo.conf 中的配置文件,2019-09-15 15:01:30,960 1 INFO ? odoo: 插件路径: ['/var/lib/odoo/addons/12.0', '/mnt/extra-addons', '/usr/lib/python3/dist-packages/odoo/addons'] ,2019-09- 15 15:01:30,961 1 信息? odoo: 数据库: odoo@db:5432 ,2019-09-15 15:01:31,104 1 信息? odoo.addons.base.models.ir_actions_report:将在 /usr/local/bin/wkhtmltopdf ,2019-09-15 15:01:31,265 1 INFO 处使用 Wkhtmltopdf 二进制文件? odoo.service.server: HTTP 服务 (werkzeug) 在 574638c2fd44:8069 ,2019-09-15 15:01:40,043 1 INFO 上运行? odoo.http: HTTP 配置静态文件 ,2019-09-15 15:01:40,072 1 INFO ? odoo.sql_db:与数据库的连接失败,2019-09-15 15:01:40,079 1 信息? werkzeug: - - [15/Sep/2019 15:01:40] “GET / HTTP/1.1” 500 - 0 0.000 0.031 ,2019-09-15 15:01:40,086 1 错误? werkzeug:请求时出错:,文件“/usr/lib/python3/dist-packages/odoo/http.py”,第 1320 行,在 call 中,返回 self.dispatch(environ, start_response) ,文件“/usr/lib/python3/dist-packages/odoo/http.py”,第 1293 行,在 call 中,返回 self.app(environ, start_wrapped) ,文件“/usr/lib/ python3/dist-packages/werkzeug/wsgi.py",第 599 行,在 call 中,返回 self.app(environ, start_response) ,文件 "/usr/lib/python3/dist-packages/odoo /http.py”,第 1453 行,在 dispatch 中,self.setup_db(httprequest),文件“/usr/lib/python3/dist-packages/odoo/http.py”,第 1376 行,在 setup_db 中,httprequest.session.db = db_monodb(httprequest) ,文件“/usr/lib/python3/dist-packages/odoo/http.py”,第 1537 行,在 db_monodb 中,dbs = db_list(True, httprequest) ,文件“/usr/lib/python3/ dist-packages/odoo/http.py”,第 1504 行,在 db_list 中,dbs = odoo.service.db.list_dbs(force),文件“/usr/lib/python3/dist-packages/odoo/service/db.py ",第 375 行,在 list_dbs 中,带有关闭(db.curs or()) as cr: ,文件“/usr/lib/python3/dist-packages/odoo/sql_db.py”,第 657 行,在 cursor 中,返回 Cursor(self.pool, self.dbname, self. dsn, serialized=serialized) , 文件 "/usr/lib/python3/dist-packages/odoo/sql_db.py", 第 171 行, in __init , self._cnx = pool.borrow(dsn) , File " /usr/lib/python3/dist-packages/odoo/sql_db.py”,第 540 行,在 _locked 中,返回 fun(self, *args, **kwargs) ,文件“/usr/lib/python3/dist-packages/ odoo/sql_db.py”,第 608 行,借用,**connection_info),文件“/usr/lib/python3/dist-packages/psycopg2/init.py”,第 130 行,连接中, conn = _connect(dsn, connection_factory=connection_factory, **kwasync) ,psycopg2.OperationalError: could not translate host name "db" to address: Name or service not known - - - ''''
【问题讨论】:
这似乎是一个 DNS 问题。要确认,请转到您的 docker 实例 bash shell 并运行:host <database server name>
它应该返回相同的错误消息。
你好 Adan,结果 >> 的地址为 172.18.0.2
【参考方案1】:
这里是解决方案。
@ odoo.conf 我更改了db_host = my_database_server_ip
以前是db_host = db
重启容器
它恢复工作:)
【讨论】:
【参考方案2】:您似乎缺少 docker 命令的 --link
选项。
您首先应该让 postgresql
容器运行:
$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10
如您所见,容器名称为db
。
然后您应该启动并运行 odoo
实例:
$ docker run -p 8069:8069 --name odoo --link db:db -t odoo
正如您在此处看到的,--link
选项告诉odoo
容器将所有请求映射到db
主机到名为db
的容器
【讨论】:
您好,艾哈迈德,感谢您的回复。这两个容器已经链接,并且运行了好几个月:docker network create --driver bridge ov-nw
sudo docker run -v ov-db-data:/var/lib/postgresql/data -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --network ov-nw --name db-ov postgres:10
sudo docker run -v odoo_addons:/mnt/extra-addons -v ov_data:/var/lib/odoo -p 8008:8069 --network ov-nw --name odoo-ov --link db-ov:db -t odoo:latest
但突然-我猜在 odoo 图像更新后-出现错误有什么想法吗? 以上是关于odoo 12 psycopg2.OperationalError:无法将主机名“db”转换为地址的主要内容,如果未能解决你的问题,请参考以下文章