Sé que exit code = 0
significa No error
.¿Dónde puedo encontrar una lista de códigos de salida "mysqldump"?
Tengo exit code = 2
. Qué significa ?
Donde puedo ver la lista completa de mysqldump
códigos de salida?
Sé que exit code = 0
significa No error
.¿Dónde puedo encontrar una lista de códigos de salida "mysqldump"?
Tengo exit code = 2
. Qué significa ?
Donde puedo ver la lista completa de mysqldump
códigos de salida?
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.”
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"?
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.
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).
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.
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
Creo que estos son códigos de error 'mysql', a diferencia de los códigos de error 'mysqldump'. – yoni