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 для получения дополнительной информации.

Другие вопросы по тегам