Mam standardowe środowisko 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
Błąd jaki otrzymuję podczas uruchamiania rake db:migrate
bazy danych to:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config / database.yml ma
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
pewnie, że brakuje mi czegoś prostego.
mysql
ruby-on-rails-3
macos
Jamie Buchanan
źródło
źródło
Odpowiedzi:
Najpierw, aby znaleźć plik gniazda:
mysqladmin variables | grep socket
Dla mnie to daje:
| socket | /tmp/mysql.sock |
Następnie dodaj linię do
config/database.yml
:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /tmp/mysql.sock
źródło
mysqladmin: command not found
Command not found
oznacza, że nie masz zainstalowanego mysql.PATH
) - musisz być wyraźny, np./program_name ...
. Oznacza to, że rzeczywisty wykonywany program jest zwykle niezależny od tego, skąd próbujesz go uruchomić.Znalazłem to!
Zmień
host: localhost
w config / database.yml,host: 127.0.0.1
aby szyny łączyć się przez TCP / IP zamiast lokalnego gniazda.development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx
źródło
Twój serwer mysql może nie być uruchomiony. Poniżej wyjaśniono, jak uruchomić serwer. To jest fragment z pliku README, który jest dołączony do pobierania mysql.
Po instalacji możesz uruchomić MySQL, uruchamiając następujące polecenia w oknie terminala. Aby wykonać to zadanie, musisz mieć uprawnienia administratora.
Jeśli zainstalowałeś element startowy, użyj tego polecenia:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
Jeśli nie używasz elementu startowego, wprowadź następującą sekwencję poleceń:
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)
źródło
unset TMPDIR
andmysql_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`Oto opcje rozwiązania tego problemu:
Opcja 1: zmień hosta na 127.0.0.1
staging: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx socket: your-location-socket
Opcja 2: Wygląda na to, że masz 2 połączenia z serwerem MySql. Aby znaleźć lokalizację pliku gniazda, wykonaj następujące czynności:
mysqladmin variables | grep socket
dla mnie daje:
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!
lub
mysql --help
Otrzymuję ten błąd, ponieważ zainstalowałem XAMPP w moim OS X w wersji 10.9.5 dla aplikacji PHP. Wybierz tutaj jedną z domyślnych lokalizacji gniazda.
Wybieram dla domyślnych aplikacji railsowych:
socket: /tmp/mysql.sock
W przypadku moich aplikacji PHP instaluję XAMPP, więc ustawiam tutaj gniazdo:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
INNE Lokalizacja gniazda w OS X
Dla MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Instalator pakietów z MySQL:
socket: /tmp/mysql.sock
Dla MySQL w pakiecie z Mac OS X Server:
socket: /var/mysql/mysql.sock
W przypadku Ubuntu:
socket: /var/run/mysqld/mysql.sock
Opcja 3: Jeśli wszystkie te ustawienia nie działają, możesz usunąć lokalizację gniazda:
staging: # socket: /var/run/mysqld/mysql.sock
Mam nadzieję, że to ci pomoże.
źródło
socket: /var/run/mysqld/mysql.sock
zadziałało dla mniePlik „/tmp/mysql.sock” zostanie utworzony automatycznie po uruchomieniu serwera MySQL. Pamiętaj więc, aby to zrobić przed uruchomieniem serwera railsowego.
źródło
Przy mojej instalacji MAMP na OSX gniazdo MySQL znajduje się pod adresem
/Applications/MAMP/tmp/mysql/mysql.sock
. Kiedyślocate mysql.sock
znajdowałem lokalizację mojego gniazda MySQL.Więc mój
config/database.yml
wygląd wygląda tak:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock
źródło
Jeśli korzystasz z Mac OSX,
Lokalizacje gniazd MySQL Unix w systemie Mac OS X według typu instalacji
Więc po prostu zmienić database.yml w
socket: /tmp/mysql.sock
pkt we właściwym miejscu w zależności od systemu operacyjnego i typu instalacji używaszźródło
Domyślna lokalizacja gniazda MySQL w systemie Mac OS X to
/var/mysql/mysql.sock
.źródło
Miałem ten sam problem, ale żadna z odpowiedzi nie wskazywała na krok po kroku tego, co musiałem zrobić. Ten błąd występuje, ponieważ plik gniazda nie został jeszcze utworzony. Wszystko co musisz zrobić to:
/tmp/mysql.sock
został utworzony, w tym celu uruchamiasz:mysql server start
config/database.yml
plik i dodaj / edytujsocket: /tmp/mysql.sock
wpisrake:dbmigrate
ponownie i wszystko powinno działać dobrzeźródło
rake db:migrate
*Odkryłem, że problem polega na tym, że mam tylko środowisko produkcyjne. Nie mam środowiska programistycznego ani testowego.
Dodając „RAILS_ENV = produkcja”, aby wydać polecenie
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
zadziałało
źródło
Jeśli używasz MYSQL przez XAMPP:
Otwórz plik konfiguracyjny XAMPP mysql (na OSX):
/Applications/XAMPP/etc/my.cnf
Skopiuj ścieżkę gniazda:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Otwórz plik konfiguracyjny bazy danych projektu railsów: myproject / config / database.yml
Dodaj konfigurację gniazda do konfiguracji programistycznej bazy danych:
->
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
Cieszyć się :)
źródło
Masz z tym problem: nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/run/mysqld/mysqld.sock'
Odp: $ sudo service mysql start
źródło
Na moim komputerze usługa mysqld przestała działać, dlatego powodowała ten sam problem.
1: - Przejdź do terminala i wpisz
sudo service mysqld restart
Spowoduje to ponowne uruchomienie usługi mysqld i utworzenie nowego pliku sock w wymaganej lokalizacji.
źródło
Jeśli używasz MYSQL przez XAMPP lub LAMPP na Ubuntu lub innym Linuksie, spróbuj:
socket: /opt/lampp/var/mysql/mysql.sock
źródło