Ich habe eine Standard-Rails3-Umgebung, 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
Fehler, den ich beim Ausführen von rake db:migrate
zum Erstellen der Datenbank bekomme, ist:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config/database.yml hat
development:
adapter: mysql2
Host: localhost
username: root
password: xxxx
database: xxxx
ich bin sicher, es ist etwas einfaches.
Erstens, um Ihre Socket-Datei zu finden:
mysqladmin variables | grep socket
Für mich gibt das:
| socket | /tmp/mysql.sock |
Fügen Sie dann eine Zeile zu Ihrem config/database.yml
hinzu:
development:
adapter: mysql2
Host: localhost
username: root
password: xxxx
database: xxxx
socket: /tmp/mysql.sock
Fand es!
Ändern Sie Host: localhost
in config/database.yml in Host: 127.0.0.1
, damit Rails anstelle von lokalem Socket über TCP/IP verbunden wird.
development:
adapter: mysql2
Host: 127.0.0.1
username: root
password: xxxx
database: xxxx
Ihr MySQL-Server läuft möglicherweise nicht. Im Folgenden wird erklärt, wie der Server gestartet wird. Dies ist ein Auszug aus der Datei README, die mit dem Download von mysql geliefert wird.
Nach der Installation können Sie MySQL starten, indem Sie die folgenden -Befehle in einem Terminalfenster ausführen. Sie müssen über Administratorrechte verfügen, um diese Aufgabe auszuführen.
Wenn Sie das Startobjekt installiert haben, verwenden Sie diesen Befehl:
Shell> Sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE Shell)
Wenn Sie das Startelement nicht verwenden, geben Sie die folgende Befehlsfolge ein:
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.sock" wird automatisch erstellt, wenn Sie den MySQL Server starten. Denken Sie also daran, dies vor dem Starten des Rails-Servers zu tun.
Wenn Sie mit Mac OSX arbeiten,
Der Standardspeicherort für den MySQL Unix-Socket unterscheidet sich unter Mac OS X und Mac OS X Server je nach gewähltem Installationstyp
MySQL Unix-Socket-Speicherorte unter Mac OS X nach Installationstyp
Ändern Sie also einfach Ihre database.yml in socket: /tmp/mysql.sock
, um je nach verwendetem Betriebssystem und Installationstyp an die richtige Stelle zu weisen
Bei meiner Installation von MAMP unter OSX befindet sich der MySQL-Socket unter /Applications/MAMP/tmp/mysql/mysql.sock
. Ich habe locate mysql.sock
verwendet, um den Speicherort für MySQL-Sockets zu finden.
So sieht mein config/database.yml
so aus:
development:
adapter: mysql2
Host: localhost
username: root
password: xxxx
database: xxxx
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Dies sind Optionen, um dieses Problem zu beheben:
Option 1: Ändern Sie Ihren Host in 127.0.0.1
staging:
adapter: mysql2
Host: 127.0.0.1
username: root
password: xxxx
database: xxxx
socket: your-location-socket
Option 2: Es scheint, als hätten Sie 2 Verbindungen zu Ihrem Server MySql .
mysqladmin variables | grep socket
für mich gibt:
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!
oder
mysql --help
Ich bekomme diese Fehlermeldung, weil ich XAMPP in meiner OS X Version 10.9.5 für die Anwendung PHP installiert habe. Wählen Sie hier einen der Standard-Socket-Speicherorte.
Ich wähle für Standard-Rails-Apps:
socket: /tmp/mysql.sock
Für meine PHP - Apps installiere ich XAMPP, damit ich meinen Socket hier setze:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
ANDERE Socket-Position in OS X
Für MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Für das Paketinstallationsprogramm von MySQL:
socket: /tmp/mysql.sock
Für MySQL mit Mac OS X Server:
socket: /var/mysql/mysql.sock
Für Ubuntu:
socket: /var/run/mysqld/mysql.sock
Option 3: Wenn all diese Einstellungen nicht funktionieren, können Sie den Sockelstandort entfernen:
staging:
# socket: /var/run/mysqld/mysql.sock
Ich hoffe das hilft dir.
Der Standardspeicherort für den MySQL-Socket unter Mac OS X ist /var/mysql/mysql.sock
.
Ich hatte das gleiche Problem, aber keine der Antworten gab Schritt für Schritt an, was ich tun musste. Dieser Fehler tritt auf, weil Ihre Socket-Datei noch nicht erstellt wurde. Alles was du tun musst, ist:
/tem/mysql.sock
erstellt wird. Führen Sie dazu Folgendes aus: mysql.server start
config/database.yml
und füge den socket: /tmp/mysql.sock
hinzu.rake:dbmigrate
noch einmal aus und alles sollte gut funktionierenIch habe festgestellt, dass das Problem darin besteht, dass ich nur eine Produktionsumgebung habe. Ich habe keine Entwicklungs- oder Testumgebung.
Durch Hinzufügen von 'Rails_ENV = production' wird der Befehl erteilt
bundle exec rake redmine:plugins:migrate Rails_ENV=production
es funktionierte
Sie haben ein Problem mit dem folgenden Problem: Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/var/run/mysqld/mysqld.sock' hergestellt werden
Ans: $ Sudo-Dienst mysql start
Wenn Sie MySQL über XAMPP ausführen:
Öffnen Sie die XAMPP-MySQL-Konfigurationsdatei (unter OSX):
/Anwendungen/XAMPP/etc/my.cnf
Kopieren Sie den Socketpfad:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Öffnen Sie die Datenbankkonfigurationsdatei des Rails-Projekts: Meinprojekt/config/database.yml
Fügen Sie die Socket-Konfiguration zur Entwicklungsdatenbank hinzu:
->
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
Genießen :)
Auf meinem Rechner hat der mysqld-Dienst angehalten, weshalb ich das gleiche Problem hatte.
1: - Zum Terminal gehen und eingeben
Sudo service mysqld restart
Dadurch wird der mysqld-Dienst neu gestartet und eine neue Sockendatei am erforderlichen Speicherort erstellt.