2016-06-19 3 views
0

Я недавно (вчера) решил попробовать Django. Так я последовал this guideDjango, psycopg2 и база данных не найдены

все, кажется, работает хорошо, пока я не попробовал эту команду:

python manage.py syncdb 

Да я знаю, SyncDB это depeciated так я использовал мигрируют. а потом вот что я получаю:

(project)[email protected]:/opt/project/newproject$ python manage.py migrate 
Traceback (most recent call last): 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/postgresql/base.py", line 175, in get_new_connection 
    connection = Database.connect(**conn_params) 
    File "/opt/project/lib/python3.5/site-packages/psycopg2/__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
psycopg2.OperationalError: FATAL: database "/opt/project/newproject/demo_db" does not exist 


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 "/opt/project/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "/opt/project/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/opt/project/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/opt/project/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File "/opt/project/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 89, in handle 
    executor = MigrationExecutor(connection, self.migration_progress_callback) 
    File "/opt/project/lib/python3.5/site-packages/django/db/migrations/executor.py", line 20, in __init__ 
    self.loader = MigrationLoader(self.connection) 
    File "/opt/project/lib/python3.5/site-packages/django/db/migrations/loader.py", line 49, in __init__ 
    self.build_graph() 
    File "/opt/project/lib/python3.5/site-packages/django/db/migrations/loader.py", line 176, in build_graph 
    self.applied_migrations = recorder.applied_migrations() 
    File "/opt/project/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations 
    self.ensure_schema() 
    File "/opt/project/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema 
    if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()): 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 231, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 204, in _cursor 
    self.ensure_connection() 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/opt/project/lib/python3.5/site-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/opt/project/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 199, in ensure_connection 
    self.connect() 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/base/base.py", line 171, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "/opt/project/lib/python3.5/site-packages/django/db/backends/postgresql/base.py", line 175, in get_new_connection 
    connection = Database.connect(**conn_params) 
    File "/opt/project/lib/python3.5/site-packages/psycopg2/__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
django.db.utils.OperationalError: FATAL: database "/opt/project/newproject/demo_db" does not exist 

вот что я понимаю: (? о, на самом деле) psycopg2 оленья кожа найти свою базу данных. Я могу заверить вас, что существует:

postgres=# \list 
            List of databases 
    Name | Owner | Encoding | Collate | Ctype | Access privileges  
-----------+-----------+----------+-------------+-------------+------------------------- 
demo_db | demo_user | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =Tc/demo_user   + 
      |   |   |    |    | demo_user=CTc/demo_user 
postgres | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | 
template0 | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/postgres   + 
      |   |   |    |    | postgres=CTc/postgres 
template1 | postgres | UTF8  | en_US.UTF-8 | en_US.UTF-8 | =c/postgres   + 
      |   |   |    |    | postgres=CTc/postgres 
(4 rows) 

Вот мой settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': os.path.join(BASE_DIR, 'demo_db'), 
    'USER': 'demo_user', 
    'PASSWORD': 'XXXXXXXXXX', 
    'HOST': 'localhost', 
    'PORT':'', 
    } 
} 

(я только что заменил мой пароль с XXX ...) (это не выглядит безопасным , но это уже другая проблема)

Я искал в Интернете, некоторые решения, и я нашел это: Postgresql & psycopg2: database does not exist

и это одна:

Creating a postgresql DB using psycopg2

Но это не помогло мне, что много. Не могли бы вы помочь мне понять, что происходит, пожалуйста? Спасибо)))

ответ

1

Вам нужно только указать имя базы данных в своих настройках; не путь:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'demo_db', 
     'USER': 'demo_user', 
     'PASSWORD': 'XXXXXXXXXX', 
     'HOST': 'localhost', 
     'PORT':'', 
    } 
} 
+0

спасибо тоже, я чувствую тупую Rly Rigth Теперь = нет S – Rainette

+0

@Rainette Не беспокойтесь. Вот почему всегда рекомендуется просматривать код, и другие смотрят на него, полагая, что это не конфиденциальные данные. Удачи! :) – jape

0

Вы должны передать имя базы данных, а не имя файла.

DATABASES = { 
    'default': { 
     ... 
     'NAME': 'demo_db', 
     ... 
    } 
} 

+0

о Боже, я чувствую себя таким тупым прямо сейчас ... Большое спасибо – Rainette

 Смежные вопросы

  • Нет связанных вопросов^_^