IsambardKingdomBrunel
#sql
#postgresql
#python
#django
#naukaprogramowania

Mam taki problem:

Mam sobie projekt w django i chciałem do niego pisać testy. Problem w tym, że przy próbie uruchomienia mam komunikat:

RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the first PostgreSQL database instead.
RuntimeWarning
Got an error creating the test database: permission denied to create database

Baza danych jest na zewnętrznym serwerze (zakładałem sobie bazę na elephant sql). Z poziomu konsoli wchodzę sobie do bazy danych i robię:

ALTER USER user CREATEDB;

no i permission denied.

potem wpisałem:

GRANT ALL PRIVILEGES ON DATABASE base TO user;

ale nic to nie dało.

Jak nadać poprawnie uprawnienia?
  • Najlepsze
  • Wszystkie komentarze
mcnight95
@IsambardKingdomBrunel: Jesteś pewien, że django łączy się jako user 'user' do basy 'base'?
IsambardKingdomBrunel
@mcnight95: settingsy są ustawione poprawnie i jak z poziomu apki robię wpis do bazy to wszystko jest ok. Problem w tym że do testów django tworzy sobie nową bazę i nie wiem jak nadać uprawnienie do ich tworzenia.

Jak to nic nie da to stworzę bazę na lokalnym serwerze, ale byłoby to przyznanie się do porażki.
mcnight95
@IsambardKingdomBrunel: a masz w database configu TEST?
IsambardKingdomBrunel
@mcnight95:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
IsambardKingdomBrunel
@mcnight95: dobra już widzę co go boli. Elephant sql pozwala na zakładanie jednej bazy danych. Żeby ogarnąć bazę do testów to muszę w elephancie stworzyć drugą.
mcnight95
@IsambardKingdomBrunel: Jeżeli wywalisz ten TEST to django będzie testowało na produkcyjnej bazie, nie wiem do końca czy o to Ci chodzi?
IsambardKingdomBrunel
@mcnight95: niestety to też nic nie dało. Do tego stworzenie drugiej bazy i przypisanie jej do testów też nic nie dało
IsambardKingdomBrunel
@mcnight95: założyłem sobie lokalną bazę i wszystko gra. Myślę że to jakieś ograniczenia po stronie serwisu.
benedek
@IsambardKingdomBrunel:
Może zacznijmy od podstaw:
podany uprzednio przeze mnie "ALTER USER user CREATEDB" określa nadanie praw użytkownikowi o nazwie 'user'! tu dajesz nazwę użytkownika np. mietek.
Tylko administrator bazy danych tj. najczęściej użytkownik o nazwie 'postgres' ma prawa do wszystkich opcji serwera.
Robisz to z konsoli 'psql' albo posłuż się PgAdminIII.
PostgreSQL serv. najczęściej nasłuchuje na porcie 5432, chyba, że inaczej zadeklarujesz w postgresql.conf lub pg_hba.conf.
Zacznij od poznania postgresa
IsambardKingdomBrunel
@benedek: Już poradziłem sobie z tym. Założyłem lokalnie sobie bazę danych i na niej nie mam tego problemu.