2012-05-29 11 views
12

Soy un novato desarrollador de Rails que usa MySQL como base de datos. Puedo conectar con éxito a MySQL con el comando:Desarrollo de raíles - No se puede conectar al servidor MySQL en 'localhost' (10061)

MySQL -u macDaddy -p 

en el símbolo del sistema, por lo que sé el usuario es válido y MySQL se está ejecutando. Pero cuando trato de ejecutar

rake db:schema:dump 

en la línea de comandos consigo este error: rastrillo abortado! No se puede conectar con el servidor MySQL en 'localhost' (10061)

¿Hay algún problema con mi database.yml? Aquí está:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: bookmobile 
    pool: 5 
    username: macDaddy 
    password: booklover 
    host: localhost 
    socket: mysql 
    port: 3306 

También he intentado quitar las líneas del puerto y hembra, pero sigo teniendo el mismo error. Por favor ayuda. Aquí están mis versiones: desarrollar en Windows 7

MySQL 5.5.21 Ver 14,14 distrib para Win64 versión 5.5.21 Servidor

Rails 3.2.1

Gracias!

+0

¿Qué ocurre si especifica 127.0.0.1 en lugar de localhost? – DVG

+0

¿Está escuchando mysqld en 3306? Pruebe 'netstat -an | grep 3306'. Si no ves algo como '* .3306 *. * LISTEN', ese podría ser el problema. –

Respuesta

1

Es porque usted no tiene contraseña definida en el servidor de base de datos (MySQL), intente esto:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: bookmobile 
    pool: 5 
    username: macDaddy 
    password: 
    host: localhost 
    socket: mysql 
    port: 3306 
41

Mi mejor conjetura es que la máquina, que usted ha indicado como Windows, ha redes IPv6 habilitado. Por lo tanto, cuando intenta ir a localhost, se resuelve en ":: 1". Esta es, de hecho, la máquina local, sin embargo, las instalaciones predeterminadas de MySQL normalmente tienen una dirección de enlace establecida en 127.0.0.1, lo que causaría que el host local fallara en esta configuración.

Usted puede ser capaz de verificar esto ejecutando ping localhost desde el símbolo del sistema, y ​​ver si se obtiene una respuesta como:

Reply from ::1: time<1ms 

Para solucionar este problema, puede cambiar su configuración para especificar:

host: 127.0.0.1 

Alternativamente, puede cambiar la configuración de MySQL para permitir una dirección de vinculación diferente, por ejemplo localhost en lugar de 127.0.0.1.

+0

Este fue exactamente mi problema, gracias. –

4

simplemente cambiar su huésped a otro: 127.0.0.1

3

Cambiar el valor de anfitrión en el database.yml sea "127.0.0.1" va a funcionar. O bien, puede modificar el archivo de hosts de su PC, agregar un elemento como "localhost 127.0.0.1".

3

Tuve un error similar, pero fue porque el puerto: 3306 faltaba en la base de datos.yml. Una vez que agregué el puerto: se resolvió el problema 3306.

0

Asegúrese de que el servidor mysql se esté ejecutando.

+1

La pregunta ya indica que mysql se está ejecutando – Litmus

1

asegúrese de que el número de puerto que ha configurado al crear MySQL (por ejemplo, 7777), por favor, agregue el número de puerto con el nombre de usuario y la contraseña adecuados.

default: &default 
    adapter: mysql2 
    encoding: utf8 
    pool: 5 
    username: root 
    password: admin 
    host: localhost 
    port: 7777 

en el directorio database.yml in config del directorio de la aplicación.

Cuestiones relacionadas