Rails: Heroku CI: Mysql2 :: Ошибка: не удается подключиться к серверу MySQL на 127.0.0.1 (111) для тестирования env

Я развернул приложение 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#file-gistfile1-txt

Это происходит, когда Heroku CI пытается выполнить rake db:schema:load_if_ruby для: test 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'] %>

person Siddhant    schedule 21.06.2018    source источник


Ответы (1)


Ознакомьтесь с предложением ниже по настройке database.yml из DATABASE_URL:

DatabaseUrl.to_active_record_hash('postgres://uuu:[email protected]:1234/abc')

Это даст следующий результат:

{:adapter=>"postgres", :host=>"127.0.0.1", :port=>1234, :database=>"abc", :user=>"uuu", :password=>"xxx"}

Дополнительную информацию см. На странице seamusabshere database_url.

person Darpan Chhatravala    schedule 21.06.2018
comment
Привет, Дарпан, вы хотите, чтобы я использовал приведенную выше команду для преобразования DATABASE_URL в рубиновый хеш и использования его в database.yml? Если это так, я думаю, что конфигурация heroku для DATABASE_URL работает нормально, просто сборка Heroku CI терпит неудачу, когда она пытается подготовить базу данных для тестового env. - person Siddhant; 22.06.2018
comment
Да, мне посоветовали вам то же самое, и, согласно вашему комментарию, я думаю, что вы устранили проблему, спасибо Siddhant. - person Darpan Chhatravala; 25.06.2018
comment
Нет, база данных уже работает нормально, и записи сохраняются в базе данных, но сборка Heroku CI завершается с ошибкой, упомянутой в вопросе. - person Siddhant; 27.06.2018
comment
@Siddhant ты когда-нибудь догадывался об этом? Я столкнулся с аналогичной проблемой. Я считаю, что 127 ... в вашей ошибке означает, что он пытается подключиться к локальному экземпляру mysql внутри динамометрического стенда heroku-ci. Это не сработает. Я думаю, что вместо этого мне нужно настроить удаленную базу данных для тестовой среды, но я получаю ошибки, поскольку сначала пытаюсь подключиться к настраиваемой базе данных Amazon RDS. - person Dan; 22.11.2018