Настройка базы данных 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.