Rails: Heroku CI: Mysql2:: Ошибка: не удается подключиться к серверу MySQL на 127.0.0.1 (111) для тестовой среды
Я развернул приложение rails на heroku, используя базу данных mysql, размещенную на удаленном сервере. Для этого я добавил дополнение heroku 'cleardb' и правильно настроил конфигурацию ENV, указав:
DATABASE_URL = mysql2://user:password@host?reconnect=true
Я также настроил непрерывное развертывание Heroku для трех ветвей (ветка -> среда)
develop -> devint,
staging -> staging,
master -> production
Непрерывное развертывание работает нормально, и база данных также настроена нормально (потому что, когда я создаю запись в приложении rails, я вижу данные на удаленном хосте mysql).
Моя проблема в том, что когда я включаю HEROKU CI, сборка завершается неудачей каждый раз с сообщением об ошибке Mysql2::Error: Can't connect to MySQL server on '127.0.0.1' (111)
Полная ошибка здесь: https://gist.github.com/siddhantbhardwaj/dab7c435815e7729d0f70081449f21ff
Это происходит, когда Heroku CI пытается выполнить rake db:schema:load_if_ruby
для: Тест ENV
Мой database.yml выглядит так:
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: what_course_development
username: user
password: password
socket: /tmp/mysql.sock
test:
<<: *default
database: what_course_test
devint:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
staging:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
1 ответ
Пожалуйста, просмотрите ниже предложение для настройки вашего database.yml из DATABASE_URL:
DatabaseUrl.to_active_record_hash('postgres://uuu:xxx@127.0.0.1:1234/abc')
Это обеспечит следующий результат:
{:adapter=>"postgres", :host=>"127.0.0.1", :port=>1234, :database=>"abc", :user=>"uuu", :password=>"xxx"}
Пожалуйста, обратитесь к https://github.com/seamusabshere/database_url для получения дополнительной информации.