2010-10-02 17 views

Respuesta

3

debe ser algo a lo largo de estas líneas:

http://dev.mysql.com/doc/refman/5.5/en/error-types.html

'00' indicates success. 
'01' indicates a warning. 
'02' indicates “not found.” 
+7

No creo que esto sea correcto. El enlace proporcionado parece ser para los códigos de error mysql. Alguna investigación muestra que el código de error 3 es un error interno de mysql y el código de error 0 es exitoso. Eso es lo que he encontrado hasta ahora de todos modos. – Arcterex

+4

Creo que estos son códigos de error 'mysql', a diferencia de los códigos de error 'mysqldump'. – yoni

31

Tomado de cliente/mysqldump.c en MySQL 1.5.59:

#define EX_USAGE 1 
#define EX_MYSQLERR 2 
#define EX_CONSCHECK 3 
#define EX_EOM 4 
#define EX_EOF 5 /* ferror for output file was got */ 
#define EX_ILLEGAL_TABLE 6 

Skimming a través de la fuente, parece EX_MYSQLERR para ser utilizado principalmente para errores del servidor, pero también en caso de que malloc falle. CONSCHECK parece representar controles de coherencia. EX_EOM también se devuelve para algunas llamadas _alloc - "End Of Memory"?

8

El código de salida 2 a menudo ocurre cuando el volcado no se pudo completar debido a problemas de privilegios; por ejemplo, si el usuario no tiene el privilegio LOCK TABLES, o la contraseña suministrada era incorrecta.

0

Otra razón podría ser una contraseña con caracteres demasiado especiales, que se utilizó sin guardar en la consola (ya que usa mysqldump). El proceso también devuelve el código de error 2. Tengo este problema de vez en cuando. Ajustar los parámetros al menos entre comillas/comillas dobles ayuda a menudo: en su lugar -u... -p... y así sucesivamente, el uso de "-u..." "-p..." elimina muchos problemas. Sin embargo, no es una solución perfecta (si se usa el mismo tipo de citas).

También puede ser un problema que depende del sistema operativo. MS Windows, por ejemplo, utiliza variables, como %MYVAR%, que parecen no poder escapar (al menos algunas fuentes como PHP docu lo mencionan).

2

Esto vale la pena señalar que si se utiliza mysqldump en función de php exec, shell_exec o system como comando devolverá 02 código de salida si no tiene permisos para escribir archivo en la ubicación seleccionada.

En mi caso comando:

mysqldump '-uUSER' '-pPASS' DATABASE > /home/USER/LOCATION/dump.sql 

cuando se llama desde php no funcionó. Fue resuelto luego de agregar los permisos de escritura adecuados a la carpeta LOCATION.

Lo resuelto por el control de lo que se envía como salida al llamar comando:

myslqdump 

y después de ella:

mysqldump '-uUSER' '-pPASS' DATABASE 

En ambos casos comando dio la respuesta correcta en el segundo argumento de exec función.

Cuestiones relacionadas