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
El error que obtengo 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 falta.
mysql
ruby-on-rails-3
macos
Jamie Buchanan
fuente
fuente
Respuestas:
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
fuente
mysqladmin: command not found
Command not found
indica que no tienes instalado mysql.PATH
); debe ser explícito, por ejemplo./program_name ...
. Esto significa que el programa real ejecutado tiende a ser independiente de desde dónde intente ejecutarlo.¡Lo encontré!
Cambie
host: localhost
config / database.yml parahost: 127.0.0.1
hacer que los rieles se conecten a través de TCP / IP en lugar de un socket local.development: adapter: mysql2 host: 127.0.0.1 username: root password: xxxx database: xxxx
fuente
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 comandos:
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)
fuente
unset TMPDIR
ymysql_install_db --verbose --user=
whoami` --basedir = "$ (brew --prefix mysql)" --datadir = / usr / local / var / mysql --tmpdir = / tmp....then I had to start the server
mysql.server start`Estas son las opciones para solucionar este problema:
Opción 1: cambie su 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 tiene 2 conexiones en su servidor MySql. Para encontrar la ubicación de su archivo de socket, haga esto:
mysqladmin variables | grep socket
para mi 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 las 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
OTROS 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 la ubicación de su socket:
staging: # socket: /var/run/mysqld/mysql.sock
Espero que esto te ayude.
fuente
socket: /var/run/mysqld/mysql.sock
funcionó para mí"/tmp/mysql.sock" se creará automáticamente cuando inicie el servidor MySQL. Así que recuerde hacerlo antes de iniciar el servidor de rails.
fuente
Con mi instalación de MAMP en OSX, el socket MySQL se encuentra en
/Applications/MAMP/tmp/mysql/mysql.sock
. Solíalocate mysql.sock
encontrar la ubicación de mi socket MySQL.Entonces mi
config/database.yml
parece:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sock
fuente
Si está en Mac OSX,
Ubicaciones de MySQL Unix Socket en Mac OS X por tipo de instalación
Así que acaba de cambiar su database.yml en
socket: /tmp/mysql.sock
el punto en el lugar adecuado dependiendo de qué sistema operativo y el tipo de instalación que está utilizandofuente
La ubicación predeterminada para el socket MySQL en Mac OS X es
/var/mysql/mysql.sock
.fuente
He tenido el mismo problema, pero ninguna de las respuestas dio un paso a paso de lo que tenía que hacer. Este error ocurre porque su archivo de socket aún no se ha creado. Todo lo que tienes que hacer es:
/tmp/mysql.sock
se cree su, para hacer eso, ejecute:mysql server start
config/database.yml
archivo y agregue / edite lasocket: /tmp/mysql.sock
entradarake:dbmigrate
una vez más y todo debería funcionar bienfuente
rake db:migrate
*Descubrí que el problema es que solo tengo un entorno de producción. No tengo un entorno de desarrollo o de prueba.
Al agregar 'RAILS_ENV = producción' para dar el comando
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
funcionó
fuente
Si está ejecutando MYSQL a través de XAMPP:
Abra el archivo de configuración mysql de XAMPP (en OSX):
/Applications/XAMPP/etc/my.cnf
Copie la ruta del socket:
socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Abra el archivo de configuración de la base de datos del proyecto 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
Disfruta :)
fuente
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
fuente
En mi máquina, el servicio mysqld se detuvo, por eso me estaba dando el mismo problema.
1: - Vaya a la terminal y escriba
sudo service mysqld restart
Esto reiniciará el servicio mysqld y creará un nuevo archivo sock en la ubicación requerida.
fuente
Si está ejecutando MYSQL a través de XAMPP o LAMPP en Ubuntu u otro Linux, intente:
socket: /opt/lampp/var/mysql/mysql.sock
fuente