Подтвердить что ты не робот

Удаленная база данных mysql в приложении Heroku

Можно ли использовать базу данных mysql с моего личного веб-сервера вместо базы данных heroku?

Я сконфигурировал свою производственную базу данных следующим образом:

production:
    adapter: mysql2
    database: somedatabase
    username: someusername
    password: somepassword
    host: 1.1.1.1:1234

Но это не работает, мое приложение по-прежнему использует общую базу данных heroku.

4b9b3361

Ответ 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 не проблема.

Я надеюсь, что это поможет.