Mina Deploy не может подключиться к MySQL во время rake db:migrate

Я новичок в использовании Mina для развертывания приложения Rails 4. Это очень простое приложение, использующее MySQL. Сервер — Ubuntu 14.04 в Digital Ocean. У меня установлен MySQL на сервере, и я могу войти в систему с помощью интерфейса командной строки mysql на сервере, используя учетные данные, которые находятся в моем файле database.yml. Однако, когда Mina пытается запустить rake db:migrate, происходит сбой со следующим:

-----> Migrating database
   $ RAILS_ENV="staging" bundle exec rake db:migrate
   rake aborted!
   Mysql2::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)

Я проверил, что расположение сокета в /etc/mysqld/my.cnf — это /var/run/mysqld/mysql.sock, и это также соответствует конфигурации database.yml.

Почему?


person andrunix    schedule 18.09.2015    source источник
comment
Вы можете определить свой mysql.sock, следуя этому руководству [расположение mysql.sock][1] [1]: stackoverflow.com/questions/5499035/   -  person akbarbin    schedule 20.09.2015
comment
Действительно, это дает мне: /var/run/mysqld/mysqld.sock, который находится в моей конфигурации и присутствует в файловой системе.   -  person andrunix    schedule 21.09.2015


Ответы (1)


Вот шаги, чтобы решить вашу проблему:

Шаг 1. измените свой хост на 127.0.0.1.

staging:
  adapter: mysql2
  host: 127.0.0.1
  username: root
  password: xxxx
  database: xxxx
  socket: your-location-socket

Шаг 2: кажется, что у вас есть 2 подключения к серверу MySql. Чтобы найти местоположение файла сокета, сделайте следующее:

mysqladmin variables | grep socket

для меня дает:

mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' exists!

or

mysql --help 

Я получаю эту ошибку, потому что я установил XAMPP в своем приложении OS X версии 10.9.5 для PHP. Выберите здесь одно из стандартных расположений сокетов.

Я выбираю для приложений rails по умолчанию:

socket: /tmp/mysql.sock

Для моих PHP-приложений я устанавливаю XAMPP, поэтому устанавливаю свой сокет здесь:

socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

ДРУГОЕ Расположение сокета в OS X

Для МАМПП:

socket: /Applications/MAMP/tmp/mysql/mysql.sock

Для установщика пакетов из MySQL:

socket: /tmp/mysql.sock

Для MySQL в комплекте с сервером Mac OS X:

socket: /var/mysql/mysql.sock

Для Ubuntu:

socket: /var/run/mysqld/mysql.sock

Для получения подробной информации ruby-on-rails-3-не могу-подключиться-к-локальному-серверу-mysql-через-сокет-tmp-mysql-s

Шаг 3. Если все эти настройки не работают, вы можете удалить расположение сокета:

staging:
  # socket: /var/run/mysqld/mysql.sock

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

person akbarbin    schedule 22.09.2015
comment
Добавление хоста: 127.0.0.1 был ответом. Спасибо за подробности. - person andrunix; 22.09.2015