Удаленная база данных mysql в приложении Heroku
Можно ли использовать базу данных mysql с моего личного веб-сервера вместо базы данных heroku?
Я сконфигурировал свою производственную базу данных следующим образом:
production:
adapter: mysql2
database: somedatabase
username: someusername
password: somepassword
host: 1.1.1.1:1234
Но это не работает, мое приложение по-прежнему использует общую базу данных heroku.
Ответы
Ответ 1
Это старо, но на случай, если кто-то опустится, ища ответ, это намного проще, чем использование драгоценного камня. Просто укажите DATABASE_URL
и SHARED_DATABASE_URL
(не уверены, требуется ли вторая). Формат URL-адреса базы данных adapter://username:[email protected]:port/database
, поэтому, например, вы бы сделали:
heroku config:add DATABASE_URL=mysql://etok:[email protected]<your-server>:3306/etok
heroku config:add SHARED_DATABASE_URL=mysql://etok:[email protected]:3306/etok
Затем повторно разверните приложение. Он прочитает ваш DATABASE_URL
и сгенерирует database.yml. Порт по умолчанию уже 3306, поэтому он не нужен в URL-адресе в вашем случае. При развертывании вы можете заметить, что он генерирует вашу базу данных .yml:
-----> Writing config/database.yml to read from DATABASE_URL
Затем вы устанавливаете (пока ваш сервер принимает соединения с вашего хоста heroku.
Ответ 2
Я написал драгоценный камень, который может помочь в этом. Вы можете найти его по адресу:
http://github.com/nbudin/heroku_external_db
Ответ 3
heroku config:add DATABASE_URL=mysql://dbusername:[email protected]:3306/databasename
heroku config:add SHARED_DATABASE_URL=mysql://dbusername:[email protected]:3306/databasename
Тогда сделайте a
Heroku restart
который должен делать.
Важное примечание. Я предлагаю вам использовать IP-адрес хоста базы данных, чем использовать имя хоста напрямую, coz, с некоторыми общедоступными службами хостинга, такими как godaddy, имя хоста db выглядит как user.345432.abcd.godaddy.com, и похоже, что герой не может правильно его решить (личный опыт), я решил имя хоста на IP-адрес и использовал IP-адрес, который работал прямо как шарм! Кроме того, если у вашего пароля базы данных есть специальные символы, убедитесь, что вы их избегаете правильно (например, "\!" Для "!" И т.д.)
Ответ 4
посмотрите адронный аксессуар Heroku Amazon RDS. Я не говорю, что использую его, но он дает вам представление о том, что вам нужно делать и как Heroku управляет данными, - в основном вам нужно установить конфигурационную переменную в ваш экземпляр mysql.
Ответ 5
Heroku игнорирует ваш database.yml. Вам нужно будет изучить решение Amazon RDS, предложенное Джоном Бейноном, или какой-либо другой подобный аддон (если таковой имеется). IMO, вам придется либо пересмотреть свою потребность в использовании вашего MySQL db, либо найти другой хостинг.
На всякий случай, если вы этого еще не знаете, команда:
heroku db:push
будет дублировать и схему AND данных вашей базы данных разработки MySQL в базе данных Heroku Postgres. Поэтому придерживаться MySQL для dev не проблема.
Я надеюсь, что это поможет.