试图连接到Docker内部的Postgres数据库,但遇到以下问题:
pyodbc.OperationalError中的文件“”,第1行:('08001', '[08001]无法连接到服务器:没有这样的文件或目录\ n \ tIs 服务器在本地运行并在Unix域上接受\ n \ t连接 套接字“ /tmp/.s.PGSQL.5432”?\n(101)(SQLDriverConnect)')
正在通过以下方式建立连接:
conn_str = ("DRIVER=/usr/local/lib/psqlodbcw.so;""DATABASE=mytestdb;""UID=postgres;""PWD=mysecretpassword""SERVER=localhost;""PORT=5432;");
conn = pyodbc.connect(conn_str)
答案 0 :(得分:1)
确保在您的 docker 容器上暴露了端口5432,否则将无法连接。这些信息可以清除您的想法。 https://medium.com/@lvthillo/connect-from-local-machine-to-postgresql-docker-container-f785f00461a7
在您的docker-compose.yml上将其更改为如下所示:
db:
image: postgres
ports:
- 5432:5432
如果本地计算机上已经有pg,则可以是5432或5435。
答案 1 :(得分:0)
您的应用程序正在尝试通过主机/ tmp /文件夹中的unix套接字文件连接postgres。
因此在posgres docker-compose文件中为Docker容器配置挂载点,如下所示:
volumes:
- /tmp:/var/lib/postgresql
然后再次重建postgres容器。