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 beim Ausführen rake db:migrate
zum Erstellen einer Datenbank 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
Sicher ist es etwas Einfaches, das mir fehlt.
mysql
ruby-on-rails-3
macos
Jamie Buchanan
quelle
quelle
Antworten:
So finden Sie zunächst Ihre Socket-Datei:
Für mich bedeutet dies:
Fügen Sie dann eine Zeile zu Ihrem hinzu
config/database.yml
:quelle
mysqladmin: command not found
Command not found
zeigt an, dass Sie MySQL nicht installiert haben.PATH
) - Sie müssen explizit sein, z./program_name ...
. Dies bedeutet, dass das tatsächlich ausgeführte Programm in der Regel unabhängig davon ist, von wo aus Sie es ausführen möchten.Fand es!
Ändern Sie
host: localhost
in config / database.yml,host: 127.0.0.1
damit Rails über TCP / IP anstelle des lokalen Sockets verbunden werden.quelle
Ihr MySQL-Server läuft möglicherweise nicht. Im Folgenden wird erläutert, wie Sie den Server starten. Dies ist ein Auszug aus der README-Datei, die mit dem MySQL-Download 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 ausführen zu können.
Wenn Sie das Startelement installiert haben, verwenden Sie diesen Befehl:
Wenn Sie das Startelement nicht verwenden, geben Sie die folgende Befehlssequenz ein:
quelle
unset TMPDIR
undmysql_install_db --verbose --user=
whoami` --basedir = "$ (brauen - Präfix mysql)" --datadir = / usr / local / var / mysql --tmpdir = / tmp....then I had to start the server
mysql.server start`Dies sind Optionen, um dieses Problem zu beheben:
Option 1: Ändern Sie Ihren Host in 127.0.0.1
Option 2: Es scheint, als hätten Sie zwei Verbindungen zu Ihrem Server MySql. Gehen Sie folgendermaßen vor, um den Speicherort Ihrer Socket-Datei zu ermitteln:
für mich gibt:
oder
Ich erhalte diesen Fehler, weil ich XAMPP in meiner OS X Version 10.9.5 für PHP-Anwendung installiert habe. Wählen Sie hier einen der Standard-Socket-Speicherorte.
Ich wähle für Standard-Rails-Apps:
Für meine PHP-Apps installiere ich XAMPP, also setze ich meinen Socket hier:
ANDERE Socket-Position in OS X.
Für MAMPP:
Für Package Installer von MySQL:
Für MySQL, das mit Mac OS X Server gebündelt ist:
Für Ubuntu:
Option 3: Wenn alle diese Einstellungen nicht funktionieren, können Sie Ihren Socket-Speicherort entfernen:
Ich hoffe das hilft dir.
quelle
"/tmp/mysql.sock" wird automatisch erstellt, wenn Sie den MySQL-Server starten. Denken Sie also daran, dies zu tun, bevor Sie den Rails-Server starten.
quelle
Bei meiner Installation von MAMP unter OSX befindet sich der MySQL-Socket unter
/Applications/MAMP/tmp/mysql/mysql.sock
. Ich habelocate mysql.sock
meinen MySQL-Socket-Speicherort gefunden.So
config/database.yml
sieht mein aus:quelle
Wenn Sie unter Mac OSX arbeiten,
MySQL Unix-Socket-Speicherorte unter Mac OS X nach Installationstyp
Also einfach Ihre ändern database.yml in
socket: /tmp/mysql.sock
dem richtigen Ort zu Punkt je nachdem , was O und Installationstyp Sie verwendenquelle
Der Standardspeicherort für den MySQL-Socket unter Mac OS X ist
/var/mysql/mysql.sock
.quelle
Ich hatte das gleiche Problem, aber keine der Antworten gab Schritt für Schritt Aufschluss darüber, was ich tun musste. Dieser Fehler tritt auf, weil Ihre Socket-Datei noch nicht erstellt wurde. Alles was du tun musst, ist:
/tmp/mysql.sock
ausführen können:mysql server start
config/database.yml
Datei und fügen Sie densocket: /tmp/mysql.sock
Eintrag hinzu / bearbeiten Sie ihnrake:dbmigrate
noch einmal und alles sollte gut funktionierenquelle
rake db:migrate
*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 = Produktion', um den Befehl zu geben
es funktionierte
quelle
Wenn Sie MYSQL über XAMPP ausführen:
Öffnen Sie die XAMPP-MySQL-Konfigurationsdatei (unter OSX):
/Applications/XAMPP/etc/my.cnf
Kopieren Sie den Socket-Pfad:
Socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Öffnen Sie die Datenbankkonfigurationsdatei des Rails-Projekts: myproject / config / database.yml
Fügen Sie die Socket-Konfiguration zur Entwicklungsdatenbankkonfiguration hinzu:
->
Genießen :)
quelle
Sie haben folgendes Problem: Es kann keine Verbindung zum lokalen MySQL-Server über den Socket '/var/run/mysqld/mysqld.sock' hergestellt werden.
Antwort: $ sudo service mysql start
quelle
Auf meinem Computer wurde der mysqld-Dienst gestoppt, weshalb ich das gleiche Problem hatte.
1: - Zum Terminal gehen und eingeben
Dadurch wird der mysqld-Dienst neu gestartet und eine neue Sock-Datei am gewünschten Speicherort erstellt.
quelle
Wenn Sie MYSQL über XAMPP oder LAMPP unter Ubuntu oder einem anderen Linux ausführen, versuchen Sie Folgendes:
socket: /opt/lampp/var/mysql/mysql.sock
quelle