django.db.utils.OperationalError: could not connect to server: No such file on Unix domain socket "/tmp/.s.PGSQL.5432"?
django.db.utils.OperationalError: could not connect to server: No such file on Unix domain socket "/tmp/.s.PGSQL.5432"?
当我将 Postgres
数据库连接到 Django
时,出现以下错误(附上屏幕截图)。当我使用直接数据库名称或用户等时,这工作正常但是当我通过环境变量使用时,它不起作用。
这是我的 setting.py 文件:
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ.get('DATABASE_NAME'),
'USER': os.environ.get('DATABASE_USER'),
'PASSWORD': os.environ.get('DATABASE_PASSWORD'),
'HOST': os.environ.get('DATABASE_HOST'),
'PORT': 5432
this is my .bash_profile enviroment variable
export DATABASE_NAME='blog'
export DATABASE_USER='bloguser'
export DATABASE_PASSWORD='blog@123'
export DATABASE_HOST='localhost'
错误本身:
self.connection = self.get_new_connection(conn_params)
File "/home/kamran/anaconda3/envs/DjangoEnv/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
connection = Database.connect(**conn_params)
File "/home/kamran/anaconda3/envs/DjangoEnv/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
以及所附图片:https://i.stack.imgur.com/fqrZQ.png
PostgreSQL 不是 运行 或配置不正确。
在文件 /etc/postgresql/{version_number}/main/postgresql.conf
中更改 listen_address localhost to *
listen_addresses = '*'
在pg_hba.conf
中,在# IPv4 local connections
中添加以下行:
host all all 0.0.0.0/0 md5
当然,您可以转到代码并将 pdb
放在 self.connection = self.get_new_connection(conn_params)
行之前,例如:
import pdb; pdb.set_trace()
self.connection = self.get_new_connection(conn_params)
运行 服务器,一旦它到达 pdb
行,您可以在运行时模式下与代码交互,它会显示一个 pdb
控制台,然后您可以查看是否是否设置了环境变量:
(pdb) p os.environ.get('DATABASE_NAME')
(pdb) p os.environ.get('DATABASE_USER')
...
它将允许您查看变量是否已设置以及是否具有正确的值。
当我将 Postgres
数据库连接到 Django
时,出现以下错误(附上屏幕截图)。当我使用直接数据库名称或用户等时,这工作正常但是当我通过环境变量使用时,它不起作用。
这是我的 setting.py 文件:
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ.get('DATABASE_NAME'),
'USER': os.environ.get('DATABASE_USER'),
'PASSWORD': os.environ.get('DATABASE_PASSWORD'),
'HOST': os.environ.get('DATABASE_HOST'),
'PORT': 5432
this is my .bash_profile enviroment variable
export DATABASE_NAME='blog'
export DATABASE_USER='bloguser'
export DATABASE_PASSWORD='blog@123'
export DATABASE_HOST='localhost'
错误本身:
self.connection = self.get_new_connection(conn_params)
File "/home/kamran/anaconda3/envs/DjangoEnv/lib/python3.8/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
connection = Database.connect(**conn_params)
File "/home/kamran/anaconda3/envs/DjangoEnv/lib/python3.8/site-packages/psycopg2/__init__.py", line 127, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
以及所附图片:https://i.stack.imgur.com/fqrZQ.png
PostgreSQL 不是 运行 或配置不正确。
在文件 /etc/postgresql/{version_number}/main/postgresql.conf
localhost to *
listen_addresses = '*'
在pg_hba.conf
中,在# IPv4 local connections
中添加以下行:
host all all 0.0.0.0/0 md5
当然,您可以转到代码并将 pdb
放在 self.connection = self.get_new_connection(conn_params)
行之前,例如:
import pdb; pdb.set_trace()
self.connection = self.get_new_connection(conn_params)
运行 服务器,一旦它到达 pdb
行,您可以在运行时模式下与代码交互,它会显示一个 pdb
控制台,然后您可以查看是否是否设置了环境变量:
(pdb) p os.environ.get('DATABASE_NAME')
(pdb) p os.environ.get('DATABASE_USER')
...
它将允许您查看变量是否已设置以及是否具有正确的值。