webentwicklung-frage-antwort-db.com.de

Ruby on Rails 3 Verbindung zum lokalen MySQL-Server über den Socket '/tmp/mysql.sock' unter OSX nicht möglich

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.

79
Jamie Buchanan

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
201
Tobias Cohen

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
79
Jamie Buchanan

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)
10
suga_shane

"/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.

6
Magne

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

  • Paket-Installationsprogramm von MySQL ------------------/tmp/mysql.sock

  • Tarball von MySQL ---------------------------/tmp/mysql.sock

  • MySQL im Lieferumfang von Mac OS X Server enthalten -------/var/mysql/mysql.sock

Ä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

3
Musili

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
3
Brad Denver

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.

3
akbarbin

Der Standardspeicherort für den MySQL-Socket unter Mac OS X ist /var/mysql/mysql.sock.

2
morgant

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:

  1. Starten Sie Ihren MySQL-Server, damit Ihr /tem/mysql.sock erstellt wird. Führen Sie dazu Folgendes aus: mysql.server start
  2. Sobald dies erledigt ist, gehe zu deinem config/database.yml und füge den socket: /tmp/mysql.sock hinzu.
  3. Führen Sie rake:dbmigrate noch einmal aus und alles sollte gut funktionieren
1
luizParreira

Ich 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

0
Paul Taylor

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

0
Binni Bharadiya

Wenn Sie MySQL über XAMPP ausführen:

  1. Öffnen Sie die XAMPP-MySQL-Konfigurationsdatei (unter OSX):

    /Anwendungen/XAMPP/etc/my.cnf

  2. Kopieren Sie den Socketpfad:

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

  3. Öffnen Sie die Datenbankkonfigurationsdatei des Rails-Projekts: Meinprojekt/config/database.yml

  4. 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
  1. Starten Sie den Rails-Server neu

Genießen :)

0
mpinvidio

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.

0