2017-10-18 9 views
1

J'ai une situation très étrange ici.Relancer la connexion postgres en django

Problème: Je décris problème d'origine dans cette post, mais pour résumer:

Après avoir utilisé le projet pendant un certain temps, makemigrations arrêter de travailler pour moi. (Oui, je l'ai mis tout ok, ok cadre sont, .. s'il vous plaît voir mes commentaires sur le post précédent)

j'ai décidé que je ne peux pas comprendre cela, alors je commencerais frais. (C'est pourquoi git est pour: D)

Donc, je supprime mon projet django, je crée un nouvel environnement virtuel, et je crée aussi une nouvelle base de données et un nouvel utilisateur dans postgres.

Je mets à jour le nouveau paramètre de base de données dans mon fichier de configuration et j'essaie d'exécuter les makemigrations initiales mais sans luch. On dit toujours qu'aucune nouvelle migration n'est disponible.

Je suis désespéré parce que je ne peux pas travailler sur le projet, de sorte que toute solution faire: D

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py makemigrations connectors environment=local 
I will use local settings. 
No changes detected in app 'connectors' 

Toutes mes migrations

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py showmigrations environment=local 
I will use local settings. 
admin 
[X] 0001_initial 
[X] 0002_logentry_remove_auto_add 
auth 
[X] 0001_initial 
[X] 0002_alter_permission_name_max_length 
[X] 0003_alter_user_email_max_length 
[X] 0004_alter_user_username_opts 
[X] 0005_alter_user_last_login_null 
[X] 0006_require_contenttypes_0002 
[X] 0007_alter_validators_add_error_messages 
[X] 0008_alter_user_username_max_length 
connectors 
(no migrations) 
contenttypes 
[X] 0001_initial 
[X] 0002_remove_content_type_name 
sessions 
[X] 0001_initial 

Lorsque la migration du déjeuner

(virtual_environment) MacBook-Pro-2:MY_PROJECT marko$ python manage.py migrate --fake-initial environment=local 
I will use local settings. 
Operations to perform: 
    Apply all migrations: admin, auth, contenttypes, sessions 
Running migrations: 
    No migrations to apply. 

La chose amusante est que si je ferme la base de données postgres, je reçois toujours le même texte dans le terminal. Je suppose que je devrais avoir une erreur de connexion.

base de données config yaml

database: 
    port: 5432 
    host: 'localhost' 
    user: 'user1' 
    password: 'user_password_123!' 
    db: 'db1' 

et mon fichier de paramètres:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql', 
     'NAME': CONFIG['database']['db'], 
     'USER': CONFIG['database']['user'], 
     'PASSWORD': CONFIG['database']['password'], 
     'HOST': CONFIG['database']['host'], 
     'PORT': CONFIG['database']['port'], 
    } 
} 
+0

Si 'showmigrations' contient beaucoup de' [X] ', cela signifie que vous vous connectez à une base de données existante, pas à une autre. – Alasdair

+0

Affichez les commandes que vous utilisez pour créer une nouvelle base de données. Django rapporte qu'une base de données a déjà été créée et migrée là-bas, indiquant que vous n'êtes pas du tout en train de créer une nouvelle base de données ou de ne pas vous connecter à la nouvelle base de données. –

Répondre

0

Après beaucoup d'heures, je trouve la solution, et il était en fait mon erreur. Je vais poster la réponse juste pour ceux qui font une erreur similaire: D

En fait, @Alasdair et @AdamBarnes avait raison. Je ne me connectais pas à la nouvelle base de données, mais pas parce que les paramètres de la base de données étaient erronés (hôte, port, nom d'utilisateur, db, ...)

# Databases start 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql', 
     'NAME': CONFIG['database']['db'], 
     'USER': CONFIG['database']['user'], 
     'PASSWORD': CONFIG['database']['password'], 
     'HOST': CONFIG['database']['host'], 
     'PORT': CONFIG['database']['port'], 
    } 
} 

if 'test' or 'jenkins' in sys.argv: 
    DATABASES['default'] = { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': 'test_database', 
} 

Le problème était si déclaration ci-dessous. Pour une raison quelconque, il comprend que c'était toujours vrai. Donc, programme migrer sqlite base de données de test interne.

J'ai besoin de résoudre ce problème avec

if ('test' in sys.argv) or ('jenkins' in sys.argv): 

Ce correctif premier problème, que quand faire des migrations LAISSER base de données vide. Après cette correction, migrate était une base de données remplie avec des tables Django par défaut, mais pas avec mes tables. Le correctif pour cela consistait à importer mon fichier models.py dans le fichier admin.py.

import connectors.models 

Merci beaucoup, tout le monde qui me donne de bons conseils, pour trouver la solution.

+0

Veuillez accepter votre propre réponse afin que la question n'apparaisse pas dans les listes "sans réponse". –

+0

Dans 23 heures, j'accepterai –