Настройка базы данных postgresql для локальной разработки в Django при использовании Heroku
Я знаю, что там много вопросов, связанных с аналогичными проблемами, но я думаю, что у меня есть определенный вкус, который еще не был рассмотрен. Я пытаюсь создать локальную базу данных postgresql, чтобы я мог выполнять локальную разработку в дополнение к нажатию на Heroku.
Я нашел основные ответы о том, как это сделать, например (что я думаю, немного устарело):
'#DATABASES = {'default': dj_database_url.config(default='postgres://fooname:barpass@localhost/dbname')}'
это решает, что "двигатель" не настроен на ошибку. Однако, когда я запустить python manage.py syncdb ' я получаю следующую ошибку:
'OperationalError: FATAL: password authentication failed for user "foo"
FATAL: password authentication failed for user "foo"'
это происходит для всех мыслимых комбинаций username / pass. Так что моя Ubuntu логин/пасс, моя через логин/пасс, и т. д. Также это происходит, если я просто пытаюсь вытащить компонент Heroku и построить его локально, как если бы я использовал postgresql, следуя учебнику. Поскольку у меня еще нет базы данных, на что, черт возьми, ссылаются эти значения username/pass? Проблема именно в том, что мне нужно создать сначала база данных? Если да, то как?
в качестве примечания я знаю, что могу получить db от heroku, используя процесс, описанный здесь:должен ли у меня быть каталог Postgres рядом с моей папкой проекта? Если да, то как?
но предполагая, что я должен это сделать, где будет жить новая БД, как django будет знать, как получить к нему доступ, и будут ли у меня те же проблемы с пользователем/пропуском?
спасибо.
1 ответов
предполагая, что у вас установлен postgres, подключитесь через pgadmin или psql и создайте нового пользователя. Затем создайте новую базу данных и с новым пользователем в качестве владельца. Убедитесь, что вы можете подключиться через psql с новым пользователем к базе данных. затем вам нужно будет настроить переменную env в файле postactivate в папке bin вашего virtualenv и сохранить ее. Вот что у меня есть для базы данных:
export DATABASE_URL='postgres://{{username}}:{{password}}@localhost:5432/{{database}}'
просто Примечание: добавление этого значения в postactivate ничего не делает. Этот файл не запускается при сохранении. Вам нужно будет либо запустить это в $ prompt, либо просто деактивировать и активировать virtualenv.
ваш settings.py следует прочитать из этого env var:
DATABASES = {'default': dj_database_url.config()}
затем вы настроите Heroku с их инструментом CLI для использования вашей производственной базы данных при развертывании. Что-то вроде:
heroku config:set DATABASE_URL={{production value here}}
(Если у вас нет установленного инструмента CLI Heroku, вам нужно это сделать)
Если вам нужно выяснить, как именно это значение вам нужна ваша производственная база данных, вы можете получить ее, войдя в субдомен postgresql heroku (в то время, когда это пишется, этоhttps://postgres.heroku.com/) и выбор БД из списка и просмотр значения" настройки подключения : URL".
таким образом, ваш же settings.py значение будет работать как для локального, так и для производственного, и вы держите свои имена пользователей/пароли вне контроля версий. Это просто значения конфигурации env.