2014-10-14 9 views
6

Jestem manekinem db i próbuję skonfigurować PostgreSQL dla mojego projektu django. Do tego używam również psycopg2. Bazy danych są jednak skomplikowane. Osobiście chciałbym, aby w jednym miejscu można było uzyskać WSZYSTKIE MOJE USTAWIENIA BAZY i UŻYTKOWNIKÓW/INFO. Więc wiedziałem, do czego się podłączyć i jak (nadal działam lokalnie, więc nie ma problemu z bezpieczeństwem?).Błąd operacyjny: FATAL: baza danych "django" nie istnieje

Jednak wygląda na to, że nie mam "uprawnień" do stworzenia tej bazy danych, mimo że łączę się ze standardowym "admin" -user "postgres". Z hasłem wpisanym podczas instalacji ("Justdoit_90").

Django projektu (settings.py):

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'django',      
     'USER': 'postgres', 
     'PASSWORD': 'Justdoit_90', 
     'HOST': '127.0.0.1', 
     'PORT': '5432', 
    } 
} 

CMD -> python manage.py shell (po imporcie django.db połączenia)

>>> cursor = connection.cursor() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 165, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 138, in _cursor 
    self.ensure_connection() 
    File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection 
    self.connect() 
    File "C:\Python27\lib\site-packages\django\db\utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 133, in ensure_connection 
    self.connect() 
    File "C:\Python27\lib\site-packages\django\db\backends\__init__.py", line 122, in connect 
    self.connection = self.get_new_connection(conn_params) 
    File "C:\Python27\lib\site-packages\django\db\backends\postgresql_psycopg2\base.py", line 134, in get_new_connection 
    return Database.connect(**conn_params) 
    File "C:\Python27\lib\site-packages\psycopg2-2.5.4-py2.7-win32.egg\psycopg2\__init__.py", line 164, in connect 
    conn = _connect(dsn, connection_factory=connection_factory, async=async) 
OperationalError: FATAL: database "django" does not exist 

Czy zrobiłem coś złego w instalacja? Czy mogę to poprawić? Czy powinienem rozważyć ponowne zainstalowanie wszystkiego? Jak bym to zrobił? Bazy danych są mylące mnie: P

+5

musisz najpierw utworzyć bazę danych. –

+0

Tak, ale jak? Ponadto myślę, że przeczytałem, że jeśli nie mam jeden, ta metoda utworzyłaby jeden. Czy nie robię tego przez tworzenie bazy danych o nazwie "django", ponieważ to wszystko, czego chcę (!?): P – howtopythonpls

Odpowiedz

10

PostgreSQL nie automatycznego tworzenia baz danych na temat pierwszego połączenia. Musisz utworzyć bazę danych, zanim będziesz mógł z niej korzystać.

Nawiąż połączenie z PostgreSQL (zwykle do administracyjnej bazy danych o nazwie "postgres"), za pośrednictwem PgAdmin-III lub klienta z linii poleceń psql i utwórz bazę danych django. Z PgAdmin-III możesz to zrobić za pomocą menu; od psql używasz the CREATE DATABASE SQL command.

Zobacz także Creating a PostgreSQL database w instrukcji i this tutorial I found in a 5second google search that doesn't look totally wrong.

Co bym zrobił się połączyć za pomocą psql (można go znaleźć w menu Start) jako user „postgres”, a hasło ustawione podczas instalacji, a następnie:

CREATE USER django WITH PASSWORD 'somepassword'; 

CREATE DATABASE django WITH OWNER django ENCODING 'utf-8'; 
+0

Nie wiedziałem, że psql był wierszem polecenia, teraz rozumiem, że wszystkie polecenia zostały usunięte. Przepraszam, że mam Windows 8. Spróbuję tego! Dziękuję Ci! – howtopythonpls

+0

@howtopythonpls Nie ma domyślnej ścieżki, więc dopóki nie zmienisz PATH, powinieneś chcieć czegoś takiego jak '% PROGRAMFILES% \ PostgreSQL \ 9.3 \ bin \ psql', jeśli podasz to bezpośrednio w wierszu poleceń. Lub możesz po prostu użyć wpisu menu Start dla niego. –

0

wszystko co trzeba zrobić, to stworzyć bazę danych o nazwie django w twoim postgresql. Domyślnie użytkownik postgres ma uprawnienia do bazy danych django, a hasło do hasła postgres użytkownika.

Powiązane problemy