Ruby on Rails 3 не может подключиться к локальному серверу MySQL через socket '/tmp/mysql.носок-на OSX
у меня есть стандартная среда Rails3, RVM 1.2.9, Rails 3.0.5, Ruby 1.9.2p180, MySQL2 Gem 0.2.7, mysql-5.5.10-osx10. 6-x86_64
ошибка, которую я получаю при запуске rake db:migrate для создания базы данных:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
конфигурация / база данных.в формате YML имеет
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
конечно, это что-то простое, что мне не хватает.
14 ответов:
во-первых, чтобы найти файл сокета:
mysqladmin variables | grep socketдля меня, это дает:
| socket | /tmp/mysql.sock |затем добавьте строку
config/database.yml:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /tmp/mysql.sock
нашли его!
изменить
host: localhostв базе данных конфигурации/.yml tohost: 127.0.0.1чтобы рельсы подключались через TCP / IP вместо локального сокета.development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx
ваш сервер mysql может не работать. Ниже объясняется, как запустить сервер. Это отрывок из файла README, который поставляется с загрузкой mysql.
после установки, вы можете запустить MySQL, выполнив следующую команды в окне терминала. У вас должны быть права администратора для выполнения этой задачи.
Если вы установили элемент запуска, используйте следующую команду:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)Если вы не используете элемент запуска, введите следующая последовательность команд:
shell> cd /usr/local/mysql shell> sudo ./bin/mysqld_safe (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-Z) shell> bg (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
" /tmp / mysql.носок" будет создан автоматически при запуске сервера MySQL. Поэтому не забудьте сделать это перед запуском сервера rails.
С моей установкой MAMP на OSX сокет MySQL находится по адресу
/Applications/MAMP/tmp/mysql/mysql.sock. Я использовалlocate mysql.sockчтобы найти мое местоположение сокета MySQL.мой
config/database.ymlвыглядит так:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock
Если вы находитесь на Mac OSX,
расположение по умолчанию для сокета MySQL Unix отличается на Mac OS X и Mac OS X Server в зависимости от выбранного типа установки
расположение сокетов MySQL Unix на Mac OS X по типу установки
- установщик пакетов из MySQL ------------------/tmp / mysql.носок
- Тарбол из MySQL ------------------------------- /tmp / mysql.носок
- MySQL в комплекте с Mac OS X Server - - - - - - - /var/mysql/mysql.носок
Так что просто измените свой
вот варианты решения этой проблемы:
Вариант 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!или
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
для MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sockдля установщика пакетов из MySQL:
socket: /tmp/mysql.sockдля MySQL в комплекте с Mac OS X Server:
socket: /var/mysql/mysql.sockдля Ubuntu:
socket: /var/run/mysqld/mysql.sockВариант 3: если все эти настройки не работают, вы можете удалить местоположение сокета:
staging: # socket: /var/run/mysqld/mysql.sockЯ надеюсь, что это поможет вам.
у меня была та же проблема, но ни один из ответов не дал шаг за шагом того, что мне нужно было сделать. Эта ошибка происходит потому, что ваш файл сокета еще не создан. Все, что вам нужно сделать, это:
- запустите сервер mysql, так что ваш
/tem/mysql.sockсоздается, для этого запустите:mysql.server start- как только это будет сделано, перейдите в свой
config/database.ymlи добавитьsocket: /tmp/mysql.sock- выполнить
rake:dbmigrateеще раз и все должно тренироваться отлично
Я обнаружил, что проблема в том, что у меня есть только производственная среда. У меня нет среды разработки или тестирования.
добавив 'RAILS_ENV=production', чтобы дать команду
bundle exec rake redmine:plugins:migrate RAILS_ENV=productionон работал
Если вы используете MYSQL через XAMPP:
открыть файл конфигурации XAMPP mysql (на OSX):
/ Applications / XAMPP / etc / my.cnf
скопируйте путь сокета:
socket = /Applications/XAMPP/xamppfiles/var/mysql / mysql.носок
открыть файл конфигурации базы данных проекта rails: myproject/config / database.в формате YML
добавьте конфигурацию сокета в конфигурация базы данных разработки:
-->
development: adapter: mysql2 encoding: utf8 reconnect: false database: difiuri_falcioni pool: 5 username: root password: host: localhost socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
- перезапустить сервер rails
наслаждайтесь :)
У вас есть проблема с таким образом: не удается подключиться к локальному серверу MySQL через socket '/var/run/mysqld/mysqld.носок'
Ans: $ sudo service mysql start