django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录 [英] django.db.utils.OperationalError: could not connect to server: No such file or directory

查看:4295
本文介绍了django.db.utils.OperationalError:无法连接到服务器:没有这样的文件或目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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. 安装所需的库。

1

  sudo apt-get install libpq-dev python-dev 
pre>


  1. 安装PostgreSQL。

1

  sudo apt-get install postgresql postgresql-contrib 
/ pre>


  1. 启动psql shell。

1

  sudo -u postgres psql 
pre>


  1. 通过输入以下命令设置postgres用户密码,并在psql中提示您输入密码贝壳。按Control + D退出。

1

  \password postgres 




  1. 创建一个名为django_user的新数据库用户。

1`

  sudo -u postgres createuser django_user 




  1. 再次转到psql shell。

1

  sudo -u postgres psql 




  1. 创建数据库并将其命名为django_db。

1

  CREATE DATABASE django_db; 




  1. 设置django_user的密码。 >

1

  ALTER USER django_user WITH PASSWORD '<密码>'; 




  1. 正确授予权限。

1

 授予DATABASE上的所有优势django_db TO django_user; 




  1. 退出psql shell并激活virtualenv。

1

  pyenv activate <&的virtualenv GT; 




  1. 安装psycopg2包

1

  pip install psycopg2 




  1. 按照以下步骤编辑Django项目settings.py



    DATABASES = {
    'default':{
    'ENGINE':'django.db.backends.postgresql_psycopg2',
    'NAME':'django_db',
    'USER':'django_user',
    'PASSWORD':'',
    'HOST':'localhost',
    'PORT' :'5432',
    }
    }


  2. 初始化db。


1

  python manage.py migrate 




  1. 启动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 migrate i 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 advance I am working on a ubantu os.

解决方案

This steps worked for me Deactivate the virtualenv if there is.

1

pyenv deactivate

  1. Install the required libraries.

1

sudo apt-get install libpq-dev python-dev

  1. Install PostgreSQL.

1

sudo apt-get install postgresql postgresql-contrib

  1. Start the psql shell.

1

sudo -u postgres psql

  1. 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

  1. Create a new database user called django_user.

1 `

sudo -u postgres createuser django_user

  1. Go to the psql shell again.

1

sudo -u postgres psql

  1. Create the database and name it django_db.

1

CREATE DATABASE django_db;

  1. Set the password for django_user.

1

ALTER USER django_user WITH PASSWORD '<password>';

  1. Grant the privilege properly.

1

GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;

  1. Exit the psql shell and activate the virtualenv.

1

pyenv activate <virtualenv>

  1. Install the psycopg2 package.

1

pip install psycopg2

  1. 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', } }

  2. Initialize the db.

1

python manage.py migrate

  1. 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:无法连接到服务器:没有这样的文件或目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆