Я пытаюсь настроить PostgreSQL локально на своем компьютере, но когда я пытаюсь первоначально настроить приложение Django с помощью python manage.py makemigrations
, я получаю следующее предупреждение:
RuntimeWarning: Got an error checking a consistent migration
history performed for database connection 'default': fe_sendauth: no password supplied
Моя таблица базы данных в settings.py
выглядит следующим образом:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ.get("DB_NAME"),
'USER': os.environ.get("DB_USER"),
'PASSWORD': os.environ.get("DB_PASSWORD"),
'HOST': os.environ.get("DB_HOST"),
'PORT': os.environ.get("DB_PORT"),
}
}
Мой файл .env
находится в том же каталоге, что и мой файл manage.py
:
DB_NAME=Smash
DB_PASSWORD=root
DB_USER=SmashDatabase
DB_HOST=localhost
DB_PORT=5432
DEBUG=1
Я пытался следовать инструкциям по этой ссылке, но ни одно из предложенных решений не решило проблему. Я не знаю, что не так или что вызывает эту проблему.
Вы используете
django-environ
? Если нет, то как файл .env распространяется в среде Django?Довольно прямолинейно, пароль не предоставляется для соединения, которое в нем нуждается. Правильно ли вы настроили
python-dotenv
в соответствии с инструкциями здесь?У меня сложилось впечатление, что пока .env находится в одном каталоге, он будет использовать одну и ту же среду. Если это не так, как люди используют
os.environ.get
?os.environ.get
будет извлекать переменные, которые были установлены в среде из оболочки или добавлены черезos.putenv()
..env
— это файловый метод переопределения предыдущего. Чтобы использовать его, вам нужно выполнить некоторые настройки в вашем приложении. Я сделал это, используяpython-dotenv
. Тогда есть другое предложение django-environ. Вы используете один из них или ничего?Сейчас я использую django-environ, но раньше я не использовал ни один из них. Когда я искал
os.environ.get
, я никогда не видел ничего о необходимости что-либо настраивать в оболочке, как мне это сделать для дальнейшего использования?Это зависит от ОС и ее оболочки, а также от того, хотите ли вы это только для сеанса или каждый раз, когда используете оболочку. В Интернете есть множество руководств, которые помогут вам пройти через это. Вы также можете использовать
os.environ
для установки переменных env, хотя это зависит от сеанса, если я правильно помню. Также я ошибался ранее, переменные, созданныеputenv()
, не будут видны вos.environ
. См. putenv.