Я хотел использовать внешнюю базу данных с моим приложением heroku. Но я не могу редактировать файлы конфигурации. Я пробовал использовать графический интерфейс, в котором говорится, что нельзя перезаписать значения вложений DATABASE_URL. Хотя я тоже пробовал использовать CLI. Я использовал команду: heroku config:addDATABASE_URL="postgresql://username:password@IP:PORT"
. Однако это вызывает ошибку ... is not a heroku command.
Как изменить DATABASE_URL для приложения heroku
Ответы (7)
Опробовав большинство этих ответов, в 2016 году я наткнулся на обновление здесь: сначала необходимо отсоединить базу данных, а затем обновить переменную DATABASE_URL.
heroku addons:attach heroku-postgresql -a <app_name> --as HEROKU_DATABASE
heroku addons:detach DATABASE -a <app_name>
heroku config:add DATABASE_URL=
DATABASE_URL
. Сделал это при переходе с Heroku Postgres на RDS на AWS.
- person Pattay; 27.07.2016
Альтернативный метод, который не требует отсоединения (что может быть нежелательным результатом переключения), состоит в том, чтобы просто присоединить новую базу данных и затем продвигать ее, что Документы Heroku явно указывает как способ установки DATABASE_URL
.
heroku addons:attach heroku-postgresql -a <app_name>
heroku pg:promote heroku-postgresql -a <app_name>
heroku-postgresql
именем новой базы данных, к которой вы хотите присоединиться. Его можно найти на странице обзора вашего приложения в Heroku Postgres.
- person AfromanJ; 10.01.2019
У меня сегодня такая же ситуация, когда мне нужно изменить postgres
на postgis
. Отключение у меня не работает, поэтому я сделал это с database.yml
:
production:
url: <%= ENV['DATABASE_URL'].sub(/^postgres/, "postgis") %>
https://github.com/rgeo/activerecord-postgis-adapter/issues/214.
Как объясняется в этой статье, правильный синтаксис для установки / добавления переменной конфигурации:
$ heroku config:set DATABASE_URL="postgresql://username:password@IP:PORT"
Однако похоже (см. Комментарии) DATABASE_URL
устарел, и попытка его обновления вызовет ошибку.
Решил это. Просто для справки пользователей, у которых есть такая же проблема или которые хотят иметь аналогичную реализацию. Вот обходной путь, который сработал для меня.
Heroku больше не перезаписывает databse.yml, поэтому я просто изменил DATBASE_URL в database.yml и вставил его :)
Это тоже сработало!
Источник: https://discussion.heroku.com/t/rails-4-1-database-yml-no-longer-overwritten-on-heroku/550
Основываясь на документах Heroku, это как вы бы делили базу данных с несколькими приложениями.
heroku addons:attach my-originating-app::DATABASE --app sushi
В моем случае мне нужно было запустить приложение загрузки java spring с моей личной базой данных (postgres). У меня есть экземпляр на AWS, и при загрузке приложения произошла ошибка, потому что он подключается без ssl.
Учитывая эту документацию (https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#using-ssl-with-postgresql), говорится:
Раньше мы предлагали добавить параметр URL sslmode = disable в URL-адреса JDBC. Теперь нам требуется использовать SSL для всех новых баз данных Heroku Postgres. Мы будем принудительно использовать SSL во всех базах данных Heroku Postgres с марта 2018 года. Пожалуйста, не отключайте SSL для своей базы данных, иначе ваши приложения могут сломаться.
Итак, возвращаясь к шагу 1, я удалил свой аддон Heroku Postgres на вкладке «Ресурсы». Шаг 2, я изменил свой application.yml с:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://<url>:<port>/<dataBaseName>?createDatabaseIfNotExist=true&useSSL=false
username: <user>
password: <pass>
to
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://<url>:<port>/<dataBaseName>?createDatabaseIfNotExist=true&useSSL=false&sslmode=disable
username: <user>
password: <pass>
Я добавил & sslmode = disable в конец строки url.
И, наконец, перестроить / развернуть (что в моем случае происходит автоматически после добавления в репо на github).
Надеюсь, это кому-то поможет.
Мир...
heroku config:add VAR="VAL"
определенно должен работать. - person eugen   schedule 28.01.2016