Не удалось выполнить миграцию с настройкой PostgreSQL

avatar
skoleosho97
8 августа 2021 в 20:40
143
0
0

Я пытаюсь настроить 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

Я пытался следовать инструкциям по этой ссылке, но ни одно из предложенных решений не решило проблему. Я не знаю, что не так или что вызывает эту проблему.

Источник
Mark R.
8 августа 2021 в 20:45
1

Вы используете django-environ? Если нет, то как файл .env распространяется в среде Django?

Adrian Klaver
8 августа 2021 в 20:49
1

Довольно прямолинейно, пароль не предоставляется для соединения, которое в нем нуждается. Правильно ли вы настроили python-dotenv в соответствии с инструкциями здесь?

skoleosho97
8 августа 2021 в 20:52
0

У меня сложилось впечатление, что пока .env находится в одном каталоге, он будет использовать одну и ту же среду. Если это не так, как люди используют os.environ.get?

Adrian Klaver
8 августа 2021 в 21:13
1

os.environ.get будет извлекать переменные, которые были установлены в среде из оболочки или добавлены через os.putenv(). .env — это файловый метод переопределения предыдущего. Чтобы использовать его, вам нужно выполнить некоторые настройки в вашем приложении. Я сделал это, используя python-dotenv. Тогда есть другое предложение django-environ. Вы используете один из них или ничего?

skoleosho97
8 августа 2021 в 21:15
0

Сейчас я использую django-environ, но раньше я не использовал ни один из них. Когда я искал os.environ.get, я никогда не видел ничего о необходимости что-либо настраивать в оболочке, как мне это сделать для дальнейшего использования?

Adrian Klaver
9 августа 2021 в 15:16
1

Это зависит от ОС и ее оболочки, а также от того, хотите ли вы это только для сеанса или каждый раз, когда используете оболочку. В Интернете есть множество руководств, которые помогут вам пройти через это. Вы также можете использовать os.environ для установки переменных env, хотя это зависит от сеанса, если я правильно помню. Также я ошибался ранее, переменные, созданные putenv(), не будут видны в os.environ. См. putenv.

Ответы (0)