问题描述
我在settings.py中的数据库设置在
DATABASES = {
'default':{
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME':'dbname',
'USER':'postgres',
'PASSWORD' postgres',
'HOST':'',
'PORT':'8081',
}
}
但是当运行python manage.py migrate
i我得到错误django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录
追溯(最近最近通话):
文件/ home / vivekpradhan / joker / basket / local / lib / python3.4 / site-packages / django / db / backends / base / base.py,第130行,在ensure_connection
self.connect()
文件/ home / vivekpradhan / joker / basket /本地/ lib / python3.4 / site-packages / django / db / backends / base / base.py,第119行,连接
self.connection = self.get_new_conn ection(conn_params)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py,第176行,get_new_connection
connection = Database.connect(** conn_params)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/psycopg2/__init__.py,第164行,在连接
conn = _connect(dsn,connection_factory = connection_factory,async = async)
psycopg2.OperationalError:无法连接到服务器:没有这样的文件或目录
服务器在本地运行并接受
连接在Unix域套接字/var/run/postgresql/.s.PGSQL.8081?
上述异常是以下异常的直接原因:
追溯(最近的最后一次调用):
文件manage.py ,第10行,<模块>
execute_from_command_line(sys.argv)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/__init__.py,第338行,在execute_from_command_line
utility.execute()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/__init__.py中,行330,执行
self.fetch_command(子命令).run_from_argv(self.argv)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django /core/management/base.py,第393行,在run_from_argv
self.execute(* args,** cmd_options)
文件/ home / vivekpradhan / joker / basket / local / lib / python3 .4 / site-packages / django / core / management / base.py,第444行,执行
output = self.handle(* args,** options)
文件/ home / vivekpradhan /joker/basket/local/lib/python3.4/site-packages/django/core/management/commands/migrate.py,第93行,处理
executor = MigrationExecutor(connection,self.migration _progress_callback)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/executor.py,第19行,__init__
自我.loader = MigrationLoader(self.connection)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/loader.py,第47行,在__init__
self.build_graph()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/loader.py,行182,在build_graph
self.applied_migrations = recorder.applied_migrations()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/ recorder.py,第59行,apply_migrations
self.ensure_schema()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/ migrations / recorder.py,第49行,在ensure_schema
如果self.Migration._meta.db_table在self.connection.introspection.table_names(self.connection.cursor() ):
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py,第162行,光标
cursor = self.make_debug_cursor(self._cursor())
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base。 py,第135行,_cursor
self.ensure_connection()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/ base / base.py,第130行,在ensure_connection
self.connect()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/ db / utils.py,第97行,__exit__
six.reraise(dj_exc_type,dj_exc_value,traceback)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site -packages / django / utils / six.py,第658行,重新计算
raise value.with_traceback(tb)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4 /site-packages/django/db/backends/base/base.py,第130行ure_connection
self.connect()
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py,第119行,连接
self.connection = self.get_new_connection(conn_params)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/后端/ postgresql_psycopg2 / base.py,第176行,get_new_connection
connection = Database.connect(** conn_params)
文件/home/vivekpradhan/joker/basket/local/lib/python3.4 /site-packages/psycopg2/__init__.py,第164行连接
conn = _connect(dsn,connection_factory = connection_factory,async = async)
django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录
服务器是否在本地运行,并在Unix域套接字/var/run/postgresql/.s.PGSQL.8081上接受
连接?
任何帮助将有助于提前
我正在ubantu os工作。 / p>
此步骤对我有用
如果存在,请停用virtualenv。
1
pyenv停用
- 安装所需的库。
1
sudo apt-get install libpq-dev python-dev
pre>
- 安装PostgreSQL。
1
sudo apt-get install postgresql postgresql-contrib
/ pre>
- 启动psql shell。
1
sudo -u postgres psql
pre>
- 通过输入以下命令设置postgres用户密码,并在psql中提示您输入密码贝壳。按Control + D退出。
1
\password postgres
- 创建一个名为django_user的新数据库用户。
1`
sudo -u postgres createuser django_user
- 再次转到psql shell。
1
sudo -u postgres psql
- 创建数据库并将其命名为django_db。
1
CREATE DATABASE django_db;
- 设置django_user的密码。 >
1
ALTER USER django_user WITH PASSWORD '<密码>';
- 正确授予权限。
1
授予DATABASE上的所有优势django_db TO django_user;
- 退出psql shell并激活virtualenv。
1
pyenv activate <&的virtualenv GT;
- 安装psycopg2包
1
pip install psycopg2
按照以下步骤编辑Django项目settings.py
DATABASES = {
'default':{
'ENGINE':'django.db.backends.postgresql_psycopg2',
'NAME':'django_db',
'USER':'django_user',
'PASSWORD':'',
'HOST':'localhost',
'PORT' :'5432',
}
}
初始化db。
1
python manage.py migrate
- 启动Django项目,看看是否一切正常。
1
python manage.py runserver 0.0 .0.0:8000
D一=)
my setting of database in settings.py is below
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'dbname', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': '', 'PORT':'8081', } }
but when running python manage.py migratei am getting error django.db.utils.OperationalError: could not connect to server: No such file or directory
Traceback (most recent call last): File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection self.connect() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 119, in connect self.connection = self.get_new_connection(conn_params) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 176, in get_new_connection connection = Database.connect(**conn_params) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/psycopg2/__init__.py", line 164, in connect conn = _connect(dsn, connection_factory=connection_factory, async=async) 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.8081"? The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line utility.execute() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 330, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/base.py", line 393, in run_from_argv self.execute(*args, **cmd_options) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/base.py", line 444, in execute output = self.handle(*args, **options) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 93, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/executor.py", line 19, in __init__ self.loader = MigrationLoader(self.connection) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/loader.py", line 47, in __init__ self.build_graph() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/loader.py", line 182, in build_graph self.applied_migrations = recorder.applied_migrations() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/recorder.py", line 59, in applied_migrations self.ensure_schema() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/migrations/recorder.py", line 49, in ensure_schema if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()): File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 162, in cursor cursor = self.make_debug_cursor(self._cursor()) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 135, in _cursor self.ensure_connection() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection self.connect() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/utils.py", line 97, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/utils/six.py", line 658, in reraise raise value.with_traceback(tb) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection self.connect() File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 119, in connect self.connection = self.get_new_connection(conn_params) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 176, in get_new_connection connection = Database.connect(**conn_params) File "/home/vivekpradhan/joker/basket/local/lib/python3.4/site-packages/psycopg2/__init__.py", line 164, in connect conn = _connect(dsn, connection_factory=connection_factory, async=async) 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 "/var/run/postgresql/.s.PGSQL.8081"?
any help will be helpful thanks in advanceI am working on a ubantu os.
解决方案This steps worked for me Deactivate the virtualenv if there is.
1
pyenv deactivate
- Install the required libraries.
1
sudo apt-get install libpq-dev python-dev
- Install PostgreSQL.
1
sudo apt-get install postgresql postgresql-contrib
- Start the psql shell.
1
sudo -u postgres psql
- Setup the postgres user password by entering the following command and you will be prompted for password in the psql shell. Press Control + D to quit after it is done.
1
\password postgres
- Create a new database user called django_user.
1 `
sudo -u postgres createuser django_user
- Go to the psql shell again.
1
sudo -u postgres psql
- Create the database and name it django_db.
1
CREATE DATABASE django_db;
- Set the password for django_user.
1
ALTER USER django_user WITH PASSWORD '<password>';
- Grant the privilege properly.
1
GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;
- Exit the psql shell and activate the virtualenv.
1
pyenv activate <virtualenv>
- Install the psycopg2 package.
1
pip install psycopg2
Edit the Django project settings.py as follow.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'django_db', 'USER': 'django_user', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '5432', }}
Initialize the db.
1
python manage.py migrate
- Start the Django project and see if everything works fine.
1
python manage.py runserver 0.0.0.0:8000
Done =)
这篇关于django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!