服务器是否在本地运行并且在Unix域套接字“ /var/run/postgresql/.s.PGSQL.5432”上接受连接?

时间:2020-10-11 16:31:30

标签: postgresql flask

执行以下命令时遇到主题错误。

heroku run python manage.py db upgrade
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

该应用程序可在本地服务器上完美运行,但无法通过postgres db迁移到heroku。

尝试了无数解决方案,但仍无济于事。

启动数据库时,以下是出现的消息

aiting for server to start....2020-10-11 20:14:58.637 +04 [11244] LOG:  starting PostgreSQL 13.0 on x86_64-apple-darwin19.4.0, compiled by Apple clang version 11.0.0 (clang-1100.0.33.8), 64-bit
2020-10-11 20:14:58.641 +04 [11244] LOG:  listening on IPv6 address "::1", port 5432
2020-10-11 20:14:58.641 +04 [11244] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-10-11 20:14:58.644 +04 [11244] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2020-10-11 20:14:58.672 +04 [11246] LOG:  database system was interrupted; last known up at 2020-10-11 20:11:13 +04
2020-10-11 20:14:59.020 +04 [11246] LOG:  database system was not properly shut down; automatic recovery in progress
2020-10-11 20:14:59.034 +04 [11246] LOG:  redo starts at 0/1671320
2020-10-11 20:14:59.034 +04 [11246] LOG:  invalid record length at 0/1671358: wanted 24, got 0
2020-10-11 20:14:59.034 +04 [11246] LOG:  redo done at 0/1671320
2020-10-11 20:14:59.067 +04 [11244] LOG:  database system is ready to accept connections
 done
server started

2 个答案:

答案 0 :(得分:0)

问题是;从错误'“ /var/run/postgresql/.s.PGSQL.5432”?“,从日志/var/run/.s.PGSQL.5432”。首先,我将尝试将您的DSN更改为使用host=,以便您不尝试连接到套接字。然后,您需要弄清psycopg2为什么要寻找不同的套接字。通常,这种情况发生在在一个发行版中针对libpq对其进行编译/使用时,该发行版将套接字放在/var/run/上,然后在套接字位于/var/run/的另一个发行版上运行。

答案 1 :(得分:0)

你只需要重启服务器的psql。小心这个数据库:

sudo service postgresql restart

我突然遇到了同样的错误。它解决了。它与 psycopg2.connect(dsn) 无关