36 votes

"paramètres".Les BASES de données n'est pas correctement configuré" erreur d'exécution syncdb avec django 1.4

J'ai créé un simple django 1.4 projet et suis en train de problème syncdb pour créer le (postgres) db schéma. J'obtiens cette erreur :-

Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured.Please supply the ENGINE value. Check settings documentation for more details.

Mon settings.py fichier ressemble à ceci :-

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'test',                      # Or path to database file if using sqlite3.
        'USER': 'test',                      # Not used with sqlite3.
        'PASSWORD': 'test',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
     }
}

Je peux me connecter à la base de données à l'aide de psql OK - des idées ? Merci à l'avance !

25voto

Jonas Geiregat Points 1676

Il se pourrait que django n'a pas accès à l'settings.py fichier vous pensez qu'il utilise. Essayez explicitement point de django pour votre fichier de paramètres à l'aide de paramètres --

./manage.py --settings=nameofproject.settings runserver/syncdb

Si cela fonctionne, alors, vous aurez à comprendre pourquoi django est d'importer le mauvais fichier de paramètres.

Avez-vous mis à niveau à partir de 1,3 à 1,4 par accident ?

16voto

Mark Points 40

Pour moi, j'ai eu un problème similaire avec django 1.6 tout à l'heure:

Arrière-plan

Django 1.6 heroku projet à l'aide de Heroku base de données Postgresql

Je voulais développer directement sur le serveur postgresql (donc, ne pas copier ".postgresql_psycopg2" peu si vous n'êtes pas aussi l'utilisation de postgresql)

  • Pas de problème de développement, en utilisant le psql db
  • Ai cette erreur quand j'ai décommenté la ligne à utiliser heroku db

    BASES de données['default'] = dj_database_url.config(par défaut=os.la fonction getenv('DATABASE_URL'))

La première tentative a été d'ajouter plus de détails, comme une autre ligne,

DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'

Cela n'a pas fonctionner, cependant, parce que l'erreur m'a demandé le NOM, dont il a rejeté

SOLUTION

En fin de compte, cela a résolu ce:

(1) j'ai couru "heroku config" pour voir mes coordonnées présenté à moi sous la forme:

postgres://user:pass@localhost/dbname

(2) j'ai mis à jour le settings.py fichier pour tenir compte de ces détails:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'your_heroku_db_name',                     
        'USER': 'your_heroku_db_user_name',
        'PASSWORD': 'your_heroku_password',
        'HOST': 'ec2-23-21-133-106.compute-1.amazonaws.com', # Or something like this
        'PORT': '5432',                     
    }
}

Cette astuce est d' http://stackoverflow.com/a/19719966/870121

Note: mon prochain plan est de faire abstraction de ces dos dans .des variables d'environnement plutôt que de la laisser visible dans settings.py

(3) j'ai commenté la ligne plus tard,

# DATABASES['default'] =  dj_database_url.config(default=os.getenv('DATABASE_URL'))  

afin de BASES de données est spécifié seulement une fois dans la settings.py fichier

De cette façon, le programme de lire tout ce qui est nécessaire pour se connecter à postgresql heroku db

par exemple, maintenant, python manage.py syncdb est de travailler pour moi


Si vous voulez essayer de développer localement, en commentaire tout ce qui précède et, à la place de votre local serveur postgresql va et décommentez l'équivalent local de la ci-dessus:

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.postgresql_psycopg2',
         'NAME': 'cool01db',
         'USER': '', 
         'PASSWORD': '',
         'HOST': 'localhost', # '127.0.0.1' probably works also
         'PORT': '5432',
     }
 }

C'est à partir d' http://stackoverflow.com/a/25962586/870121

4voto

zwindy Points 41

Il y a deux "settings.py' les fichiers de votre projet(si votre OS est en UNIX-like):

  • On est dans la première dir
  • On est dans le dir/dir

Vous devez écrire le MOTEUR à la seconde (dir/dir/setting.py).

Bonne chance!

3voto

Qui settings.py fichier avez-vous mis à jour? J'ai eu exactement ce même problème au début, lorsque je n'ai pas lu à propos de Django reinhardt, des changements de 1.3 à 1.4 qui provoque le double des importations. Voici un extrait de https://docs.djangoproject.com/en/1.4/releases/1.4/#updated-default-project-layout-and-manage-py. La dernière version de Django (actuellement 1.4.2) est livré avec une mise à jour par défaut de présentation de projet et manage.py fichier pour la startproject gestion de commande et le défaut de présentation de projet a changé.

Pour corriger vos erreurs, les corriger settings.py fichier, vous devez utiliser n'est PAS celui dans le répertoire de projet principal, c'est celui qui est dans le répertoire est créé dans le répertoire du projet (avec le même nom).

0voto

Adel Points 76

Re-installation de Django a fait le tour pour moi(en fait de retirer l'œuf de fichier),comme le suggère le lien suivant. https://code.djangoproject.com/ticket/18058 Il semble que la mise à niveau à partir de 1,3 à 1,4 semble causer beaucoup de ces problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X