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:migratepara 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 socketPara 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.sockfuente
mysqladmin: command not foundCommand not foundindica 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: localhostconfig / database.yml parahost: 127.0.0.1hacer 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: xxxxfuente
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 TMPDIRymysql_install_db --verbose --user=whoami` --basedir = "$ (brew --prefix mysql)" --datadir = / usr / local / var / mysql --tmpdir = / tmp....then I had to start the servermysql.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-socketOpció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 socketpara 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 --helpRecibo 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.sockPara mis aplicaciones PHP, instalo XAMPP, así que configuro mi socket aquí:
socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sockOTROS Ubicación del socket en OS X
Para MAMPP:
socket: /Applications/MAMP/tmp/mysql/mysql.sockPara el instalador de paquetes de MySQL:
socket: /tmp/mysql.sockPara MySQL incluido con Mac OS X Server:
socket: /var/mysql/mysql.sockPara Ubuntu:
socket: /var/run/mysqld/mysql.sockOpción 3: si todas esas configuraciones no funcionan, puede eliminar la ubicación de su socket:
staging: # socket: /var/run/mysqld/mysql.sockEspero que esto te ayude.
fuente
socket: /var/run/mysqld/mysql.sockfuncionó 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.sockencontrar la ubicación de mi socket MySQL.Entonces mi
config/database.ymlparece:development: adapter: mysql2 host: localhost username: root password: xxxx database: xxxx socket: /Applications/MAMP/tmp/mysql/mysql.sockfuente
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.sockel 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.sockse cree su, para hacer eso, ejecute:mysql server startconfig/database.ymlarchivo y agregue / edite lasocket: /tmp/mysql.sockentradarake:dbmigrateuna 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=productionfuncionó
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.sockDisfruta :)
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 restartEsto 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.sockfuente