solucion - Ruby on Rails 3 No se puede conectar al servidor MySQL local a través del socket ''/tmp/mysql.sock'' en OSX
error 2002 mysql solucion (13)
Tengo un entorno Rails3 estándar, 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
Error que recibo al ejecutar rake db:migrate
para crear una base de datos es:
Can''t connect to local MySQL server through socket ''/tmp/mysql.sock'' (2)
config / database.yml tiene
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
Seguro que es algo simple que me estoy perdiendo.
"/tmp/mysql.sock" se creará automáticamente cuando inicie el servidor MySQL. Así que recuerda hacer eso antes de iniciar el servidor de rieles.
¡Lo encontré!
Cambiar el host: localhost
en config / database.yml al host: 127.0.0.1
para hacer que los rieles se conecten a través de TCP / IP en lugar del socket local.
development:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
Con mi instalación de MAMP en OSX, el socket de MySQL se encuentra en /Applications/MAMP/tmp/mysql/mysql.sock
. Utilicé locate mysql.sock
para encontrar mi ubicación de socket MySQL.
Entonces mi config/database.yml
ve así:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Descubrí que el problema es que solo tengo un entorno de producción. No tengo un entorno de desarrollo o prueba.
Al agregar ''RAILS_ENV = producción'' para dar el comando
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
funcionó
En mi máquina, el servicio de mysqld se detuvo, por eso me estaba dando el mismo problema.
1: - Ir a la terminal y escribir
sudo service mysqld restart
Esto reiniciará el servicio mysqld y creará un nuevo archivo sock en la ubicación requerida.
Es posible que su servidor mysql no se esté ejecutando. A continuación se explica cómo iniciar el servidor. Este es un extracto del archivo README que viene con la descarga de mysql.
Después de la instalación, puede iniciar MySQL ejecutando los siguientes comandos en una ventana de terminal. Debe tener privilegios de administrador para realizar esta tarea.
Si ha instalado el elemento de inicio, use este comando:
shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
(ENTER YOUR PASSWORD, IF NECESSARY)
(PRESS CONTROL-D OR ENTER "EXIT" TO EXIT THE SHELL)
Si no usa el elemento de inicio, ingrese la siguiente secuencia de comando:
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)
Estas son opciones para solucionar este problema:
Opción 1: cambia tu host a 127.0.0.1
staging:
adapter: mysql2
host: 127.0.0.1
username: root
password: xxxx
database: xxxx
socket: your-location-socket
Opción 2: Parece que tienes 2 conexiones en tu servidor MySql. Para encontrar su ubicación de archivo de socket haga esto:
mysqladmin variables | grep socket
para mí da:
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!
o
mysql --help
Recibo este error porque instalé XAMPP en mi OS X Versión 10.9.5 para la aplicación PHP. Elija una de las ubicaciones de socket predeterminadas aquí.
Elijo aplicaciones de rieles predeterminadas:
socket: /tmp/mysql.sock
Para mis aplicaciones PHP, instalo XAMPP así que configuro mi socket aquí:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
OTHERS Ubicación del socket en OS X
Para MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sock
Para el instalador de paquetes de MySQL:
socket: /tmp/mysql.sock
Para MySQL incluido con Mac OS X Server:
socket: /var/mysql/mysql.sock
Para Ubuntu:
socket: /var/run/mysqld/mysql.sock
Opción 3: si todas esas configuraciones no funcionan, puede eliminar su ubicación de socket:
staging:
# socket: /var/run/mysqld/mysql.sock
Espero que esto te ayude.
He tenido el mismo problema, pero ninguna de las respuestas dio paso a paso lo que necesitaba hacer. Este error ocurre porque su archivo de socket no se ha creado aún. Todo lo que tienes que hacer es:
- Comience su servidor mysql, entonces su
/tem/mysql.sock
es creado, para hacer eso ejecuta:mysql.server start
- Una vez hecho esto, vaya a su
config/database.yml
y agregue elsocket: /tmp/mysql.sock
- Ejecutar
rake:dbmigrate
una vez más y todo debe entrenar bien
La ubicación predeterminada para el socket MySQL en Mac OS X es /var/mysql/mysql.sock
.
Primero, para encontrar su archivo de socket:
mysqladmin variables | grep socket
Para mí, esto da:
| socket | /tmp/mysql.sock |
Luego, agregue una línea a su config/database.yml
:
development:
adapter: mysql2
host: localhost
username: root
password: xxxx
database: xxxx
socket: /tmp/mysql.sock
Si está ejecutando MYSQL a través de XAMPP:
Abra el archivo de configuración de XAMPP mysql (en OSX):
/Aplicaciones/XAMPP/etc/my.cnf
Copie la ruta del socket
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Archivo de configuración de la base de datos del proyecto Open Rails: myproject / config / database.yml
Agregue la configuración del socket a la configuración de la base de datos de desarrollo:
->
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
- Reiniciar servidor de carriles
Disfruta :)
Si estás en Mac OSX,
La ubicación predeterminada para el socket MySQL Unix es diferente en Mac OS X y Mac OS X Server, dependiendo del tipo de instalación que elija
Ubicaciones de socket Unix de MySQL en Mac OS X por tipo de instalación
- Instalador de paquete de MySQL ------------------ / tmp / mysql.sock
- Tarball de MySQL ------------------------------- / tmp / mysql.sock
- MySQL incluido con Mac OS X Server ------- / var / mysql / mysql.sock
Así que simplemente cambie su database.yml en socket: /tmp/mysql.sock
para que apunte al lugar correcto según el sistema operativo y el tipo de instalación que esté utilizando
Usted tiene un problema con esto: No se puede conectar al servidor MySQL local a través del socket ''/var/run/mysqld/mysqld.sock''
Respuesta: $ sudo service mysql start