2011-08-07 11 views
9

No sé mucho sobre el mantenimiento del servidor y estoy tratando de aprender manejando mi propia Mac. Estoy ejecutando una aplicación local de rieles con una base de datos MySQL (5.5.9). Todo ha ido bien durante mucho tiempo HASTA que intenté comenzar un nuevo proyecto de rieles. En ese momento, ejecuté bundle install, que actualizó mi gema mysql de 0.2.6 a 0.3.6. Desde entonces, o estoy asociándome con eso (puede ser que también instalé RVM en ese momento), no puedo iniciar mi servidor MySQL. Me sale el siguiente error:teniendo problemas repetidos con MySQL y Snow Leopard - No se puede bloquear ./ibdata1, error: 35

Unable to lock ./ibdata1, error: 35 

varias veces. He intentado fijar con:

mv ibdata1 ibdata1.bak 
cp -a ibdata1.bak ibdata1 

que funciona (Referencia http://cglreport.zhenhua.info/2008/08/mysql-error-unable-to-lock-ibdata1.html) (Tengo que hacerlo en algunos otros archivos también), pero sólo funciona durante un tiempo. Cuando reinicio, o periódicamente el problema vuelve. Que esta pasando ? Esto no parece ser una solución razonable para mí. Ideas? ¡Gracias!

+0

entonces el error se convierte en: No se puede iniciar el servidor: Bind en el puerto TCP/IP: 3036 Dirección ya en uso. Raro, ayuda !!!! – panzhuli

+0

ejecutar el comando "superior" no muestra nada que se ejecute en 3036 btw – panzhuli

+0

'top' no le diría nada sobre los números de puerto. – duskwuff

Respuesta

13

Eso suena muy convincentemente como si ya tuviera una instancia de su servidor MySQL ejecutándose, y está tratando de robar un archivo de datos que está usando.

+0

¿hay alguna manera de preguntarle al sistema qué se está ejecutando en el puerto 3036? No veo nada allí cuando ejecuto "top" desde la terminal. Creo que esto es una limitación de mi conocimiento aquí ... – panzhuli

+5

Probablemente sea más fácil simplemente buscar 'ps ax | grep mysql'. Para la posteridad, sin embargo, intente 'lsof -np | grep: mysql'. ('lsof' traduce los números de los puertos a los nombres de los servicios en su salida, por lo que debe buscar": mysql "en lugar de": 3306 ".) – duskwuff

+0

gracias. en algún lugar a lo largo de la línea, el servidor comenzó de nuevo. ¿Por qué crees que esto está sucediendo repetidamente? ¿Los archivos anteriores están dañados? – panzhuli

0

Esto es lo que lo solucionó, miró alrededor y nada ayudó.

Para resolver este problema, haga una copia de los archivos originales (ibdata1, ib_logfile0, ib_logfile1 ...).

mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak 

cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1 

Ahora, inicie el servicio de mysql.

/etc/init.d/mysql start 

En mi caso se trataba de los archivos XAMPP así lo hice

sudo mv /Applications/XAMPP/xamppfiles/var/mysql/ibdata1 /Users/username/Documents/tmp/ibdata1.bak 
sudo cp -a /Users/username/Documents/tmp/ibdata1.bak /Applications/XAMPP/xamppfiles/var/mysql/ibdata1 

Entonces me di cuenta de que MySQL ya se inició para mí.

Sobre la base de la solución here

Cuestiones relacionadas