У меня стандартная среда 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)
config / database.yml имеет
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
конечно, это что-то простое, мне не хватает
mysql
ruby-on-rails-3
macos
Джейми Бьюкенен
источник
источник
Ответы:
Во-первых, чтобы найти файл сокета:
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
источник
mysqladmin: command not found
Command not found
указывает, что у вас не установлен mysql.PATH
) - вы должны быть явными, например./program_name ...
. Это означает, что фактическая выполняемая программа обычно не зависит от того, откуда вы пытаетесь ее запустить.Нашел!
Измените
host: localhost
config / database.yml, чтобыhost: 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)
источник
unset TMPDIR
иmysql_install_db --verbose --user=
whoami` --basedir = "$ (brew --prefix mysql)" --datadir = / usr / local / var / mysql --tmpdir = / tmp....then I had to start the server
mysql.server start`Вот варианты решения этой проблемы:
Вариант 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. Выберите здесь одно из мест расположения сокетов по умолчанию.
Я выбираю для приложений рельсов по умолчанию:
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
Надеюсь, это вам поможет.
источник
socket: /var/run/mysqld/mysql.sock
у меня работала"/tmp/mysql.sock" будет создан автоматически при запуске сервера 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 по типу установки
Так что просто изменить database.yml в
socket: /tmp/mysql.sock
к точке в нужном месте в зависимости от того, какого операционной системы и типа установки вы используетеисточник
Расположение по умолчанию для сокета MySQL в Mac OS X -
/var/mysql/mysql.sock
.источник
У меня была такая же проблема, но ни один из ответов не дал подробного описания того, что мне нужно было сделать. Эта ошибка возникает из-за того, что ваш файл сокета еще не создан. Все, что вам нужно сделать, это:
/tmp/mysql.sock
он был создан, для этого вы запустите:mysql server start
config/database.yml
файл и добавьте / отредактируйтеsocket: /tmp/mysql.sock
записьrake:dbmigrate
еще раз, и все должно тренироваться нормальноисточник
rake db:migrate
*Я обнаружил, что проблема в том, что у меня есть только производственная среда. У меня нет среды разработки или тестирования.
Добавив 'RAILS_ENV = production', чтобы дать команду
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
это сработало
источник
Если вы используете MYSQL через XAMPP:
Откройте файл конфигурации XAMPP mysql (в OSX):
/Applications/XAMPP/etc/my.cnf
Скопируйте путь к сокету:
сокет = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Откройте файл конфигурации базы данных проекта 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
Наслаждаться :)
источник
У вас такая проблема: не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock'
Ответ: $ sudo service mysql start
источник
На моей машине служба mysqld остановилась, поэтому у меня возникла та же проблема.
1: - Зайдите в терминал и введите
sudo service mysqld restart
Это перезапустит службу mysqld и создаст новый файл sock в нужном месте.
источник
Если вы используете MYSQL через XAMPP или LAMPP в Ubuntu или другом Linux, попробуйте:
socket: /opt/lampp/var/mysql/mysql.sock
источник