#postgresql #flask
#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"?
Приложение отлично работает на локальном сервере, но не переносится на heroku с postgres db.
Перепробовал множество решений, пока ничего не сработало.
При запуске БД появляется следующее сообщение
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
Ответ №1:
вам просто нужно перезапустить psql сервера. Будьте осторожны с этой базой данных:
sudo service postgresql restart
Внезапно у меня возникла та же ошибка. Он разрешается. Это не связано с psycopg2.connect (dsn)
Ответ №2:
Проблема в том, что из-за ошибки «/ var /run /postgresql /.s.PGSQL.5432″?», а не из журнала «прослушивание сокета Unix «/tmp / .s.PGSQL.5432». Сначала я бы попробовал изменить ваш DSN
режим использования host=
, чтобы вы не пытались подключиться к сокету. Затем вам нужно разобраться, почему psycopg2
он ищет другой сокет. Обычно это происходит, когда он компилируется / используется против libpq
одного дистрибутива, в который помещается сокет, /var/run/
а затем запускается на другом, где находится сокет /tmp/
.
Комментарии:
1. Если ваш dsn for
conn
не указывает на это, он не будет работать. Вам необходимо предоставить полную информацию и сделать это в своем вопросе, чтобы другим не пришлось просматривать все комментарии, чтобы найти ее. Попробуйте то, что я предложил в своем ответе, то есть укажитеhost
на то, что не является сокетом. Другими словами, по фактическому имени или адресу хоста.2. Спасибо за попытку помочь Адриану, но не могу понять, что требуется сделать.
3. Для начала в вашем вопросе укажите информацию о том, что
dsn
такое inconn = _connect(dsn, connection_factory=connection_factory, **kwasync)
?4. на моем mac явно не установлен какой-либо dsn
5. Ну, это ваша проблема. Вам нужно указать что-то для
dsn
inpsycopg2.connect(dsn)
, где бы это ни вызывалось в коде. В противном случае он будет использовать значения по умолчанию. Также я предполагаю, что вы установилиpsycopg2-binary
.