J’ai un environnement Rails3 standard, 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
Erreur que j’obtiens lors de l’exécution de rake db:migrate
pour créer une firebase database est la suivante:
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
config / database.yml a
development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx
Sûr que c’est quelque chose de simple qui me manque.
Tout d’abord, pour trouver votre fichier de socket:
mysqladmin variables | grep socket
Pour moi, cela donne:
| socket | /tmp/mysql.sock |
Ensuite, ajoutez une ligne à votre config/database.yml
:
development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /tmp/mysql.sock
Je l’ai trouvé!
Changez l’ host: localhost
dans config / database.yml pour l’ host: 127.0.0.1
pour que les rails se connectent via TCP / IP au lieu du socket local.
development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx
Votre serveur mysql peut ne pas fonctionner. Ci-dessous explique comment démarrer le serveur. Ceci est un extrait du fichier README fourni avec le téléchargement de mysql.
Après l’installation, vous pouvez démarrer MySQL en exécutant les commandes suivantes dans une fenêtre de terminal. Vous devez disposer de privilèges d’administrateur pour effectuer cette tâche.
Si vous avez installé l’élément de démarrage, utilisez cette commande:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start (ENTER YOUR PASSWORD, IF NECESSARY) (PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
Si vous n’utilisez pas l’élément de démarrage, entrez la séquence de commandes suivante:
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” sera créé automatiquement au démarrage du serveur MySQL. Alors n’oubliez pas de le faire avant de démarrer le serveur de rails.
Avec mon installation de MAMP sur OSX, le socket MySQL se trouve dans /Applications/MAMP/tmp/mysql/mysql.sock
. J’ai utilisé locate mysql.sock
pour trouver mon emplacement de socket MySQL.
Donc mon config/database.yml
ressemble à ceci:
development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock
Si vous êtes sur Mac OSX,
L’emplacement par défaut du socket Unix MySQL est différent sur Mac OS X et Mac OS X Server, selon le type d’installation choisi
Emplacement des sockets MySQL Unix sous Mac OS X par type d’installation
Changez simplement votre database.yml dans socket: /tmp/mysql.sock
pour qu’il pointe au bon endroit en fonction du système d’exploitation et du type d’installation que vous utilisez
L’emplacement par défaut du socket MySQL sur Mac OS X est /var/mysql/mysql.sock
.
Ce sont des options pour résoudre ce problème:
Option 1: changez votre hôte en 127.0.0.1
staging: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx socket: your-location-socket
Option 2: Il semble que vous ayez 2 connexions dans votre serveur MySql. Pour trouver votre emplacement de fichier de socket, procédez comme suit:
mysqladmin variables | grep socket
pour moi donne:
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!
ou
mysql --help
Je reçois cette erreur car j’ai installé XAMPP dans mon OS X version 10.9.5 pour une application PHP. Choisissez l’un des emplacements de socket par défaut ici.
Je choisis pour les applications rails par défaut:
socket: /tmp/mysql.sock
Pour mes applications PHP, j’installe XAMPP alors je mets mon socket ici:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
OTHERS Socket Location dans OS X
Pour MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Pour l’installateur de paquets de MySQL:
socket: /tmp/mysql.sock
Pour MySQL fourni avec Mac OS X Server:
socket: /var/mysql/mysql.sock
Pour Ubuntu:
socket: /var/run/mysqld/mysql.sock
Option 3: Si tous ces parameters ne fonctionnent pas, vous pouvez supprimer l’emplacement de votre socket:
staging: # socket: /var/run/mysqld/mysql.sock
J’espère que cela vous aidera.
J’ai eu le même problème, mais aucune des réponses n’a donné pas à pas ce que je devais faire. Cette erreur se produit parce que votre fichier de socket n’a pas encore été créé. Tout ce que tu dois faire est:
/tem/mysql.sock
soit créé, pour cela vous lancez: mysql.server start
config/database.yml
et ajoutez le socket: /tmp/mysql.sock
rake:dbmigrate
une fois de plus et tout devrait bien rake:dbmigrate
J’ai trouvé que le problème est que je n’ai qu’un environnement de production. Je n’ai pas d’environnement de développement ou de test.
En ajoutant ‘RAILS_ENV = production’ pour donner la commande
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
ça a marché
Si vous exécutez MYSQL via XAMPP:
Ouvrez le fichier de configuration mysql XAMPP (sous OSX):
/Applications/XAMPP/etc/my.cnf
Copiez le chemin du socket:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Fichier de configuration de la firebase database du projet Open Rails: myproject / config / database.yml
Ajoutez le socket config à la configuration de la firebase database de développement:
->
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
Prendre plaisir 🙂
Vous avez un problème avec ceci: Impossible de se connecter au serveur MySQL local via le socket ‘/var/run/mysqld/mysqld.sock’
Ans: $ sudo service mysql start
Sur ma machine, le service mysqld s’est arrêté, c’est pourquoi cela m’a posé le même problème.
1: – Aller au terminal et taper
sudo service mysqld restart
Cela va redémarrer le service mysqld et créer un nouveau fichier sock à l’emplacement requirejs.