Ich habe auf Heroku entwickelt, mit den config
Variablen, um empfindliche und andere Umgebungsvariablen zu speichern. Bei der lokalen Entwicklung habe ich diese Variablen in der Datei .env
gespiegelt.Umgebungsvariablen von .env-Datei nicht verfügbar während lokaler Migrationen in Django, Heroku
Was ich jetzt finde, ist die Variablen aus der Datei .env
laden nicht während Migrationen. Sie werden beim Ausführen des lokalen Webservers mit heroku local
geladen, aber nicht für Migrationen geladen. Dies war kein Problem, während meine lokale App immer noch die Standard-SQLite3-Datenbank verwendete, da die SQL-Standard-DB in der Einstellungsdatei "fest codiert" war. In letzter Zeit möchte ich jedoch meine lokale Postgresql-Datenbank für lokale Entwickler verwenden. OK, also habe ich die DATABASE_URL
Variable meiner .env
Datei hinzugefügt.
Ich kann meine lokale App nicht auf die DB migrieren. Ich habe herausgefunden, dass dies daran liegt, dass der Dateiinhalt .env
nicht zu den Migrationsdaten os.environ
hinzugefügt wird.
Um zu testen, habe ich eine Testvariable auf die .env
Datei:
TEST="teeeest"
Dann in settings.py
:
import os
import dj_database_url
if "TEST" not in os.environ:
raise Exception("No .env vars found.")
I python manage.py migrate
versucht:
Datei „/ Users/apple/heroku/b/b/settings.py ", Zeile 16, in raise Exception (" Nein .env vars found. ") Ausnahme: Keine .env vars gefunden.
Allerdings kann ich heroku local
laufen und es gibt keinen Fehler. Ich habe auch weitere Tests durchgeführt, um sicherzustellen, dass die Variablen .env
während heroku local
verfügbar sind.
Aus verschiedenen Gründen möchte ich meine lokale DB-Verbindungszeichenfolge in der Datei .env
einstellen, scheint aber momentan nicht möglich. Ist das das richtige Verhalten für Django auf Heroku? .env
Dateivariablen sind nur zugänglich, wenn Sie den Server ausführen und nicht für Migrationen?
ich eigentlich dachte, es nur nach einem langen Wochenend- aus> 'Heroku local: run Python manage.py migrate'. https://devcenter.heroku.com/articles/heroku-local#run-your-app-locally-using-the-heroku-local-common-line-tool-run-a-one-off-command-locally –