26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica...

35
26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden aparecer cuando llama MySQL desde cualquier idioma de equipo. La primera lista muestra los mensajes de error del servidor. La segunda lista muestra los mensajes de los programas clientes. La información de error del servidor se obtiene de los siguientes archivos: · Los valores de error y los símbolos en paréntesis se corresponden con las definiciones en el fichero fuente de MySQL include/mysqld_error.h. · Los valores SQLSTATE se corresponden con las definiciones en el fichero fuente de MySQL include/sql_state.h. · Los valores de Mensaje se corresponden con los mensajes de error que pueden encontrarse listados en el fichero share/errmsg.txt . %d y %s representan números y cadenas de caracteres, respectivamente, que se substituyen en los mensajes cuando se muestran. Como las actualizaciones son frecuentes, es posible que estos ficheros contengan información de error adicional que no está listada aquí. · Error: 1000 SQLSTATE: HY000 ( ER_HASHCHK) Mensaje: hashchk · Error: 1001 SQLSTATE: HY000 ( ER_NISAMCHK) Mensaje: isamchk · Error: 1002 SQLSTATE: HY000 ( ER_NO) Mensaje: NO · Error: 1003 SQLSTATE: HY000 ( ER_YES) Mensaje: SI · Error: 1004 SQLSTATE: HY000 ( ER_CANT_CREATE_FILE) Mensaje: No puedo crear archivo '%s' (Error: %d) · Error: 1005 SQLSTATE: HY000 ( ER_CANT_CREATE_TABLE) Mensaje: No puedo crear tabla '%s' (Error: %d) · Error: 1006 SQLSTATE: HY000 ( ER_CANT_CREATE_DB) Mensaje: No puedo crear base de datos '%s' (Error: %d) · Error: 1007 SQLSTATE: HY000 ( ER_DB_CREATE_EXISTS) Mensaje: No puedo crear base de datos '%s'; la base de datos ya existe · Error: 1008 SQLSTATE: HY000 ( ER_DB_DROP_EXISTS) Mensaje: No puedo eliminar base de datos '%s'; la base de datos no existe · Error: 1009 SQLSTATE: HY000 ( ER_DB_DROP_DELETE) Mensaje: Error eliminando la base de datos(no puedo borrar '%s', error %d) · Error: 1010 SQLSTATE: HY000 ( ER_DB_DROP_RMDIR) Mensaje: Error eliminando la base de datos (No puedo borrar directorio '%s', error %d) · Error: 1011 SQLSTATE: HY000 ( ER_CANT_DELETE_FILE) Mensaje: Error en el borrado de '%s' (Error: %d) · Error: 1012 SQLSTATE: HY000 ( ER_CANT_FIND_SYSTEM_REC) Mensaje: No puedo leer el registro en la tabla del sistema · Error: 1013 SQLSTATE: HY000 ( ER_CANT_GET_STAT) Mensaje: No puedo obtener el estado de '%s' (Error: %d) · Error: 1014 SQLSTATE: HY000 ( ER_CANT_GET_WD) Mensaje: No puedo acceder al directorio (Error: %d) · Error: 1015 SQLSTATE: HY000 ( ER_CANT_LOCK) Mensaje: No puedo bloquear archivo: (Error: %d) · Error: 1016 SQLSTATE: HY000 ( ER_CANT_OPEN_FILE) Mensaje: No puedo abrir archivo: '%s' (Error: %d) · Error: 1017 SQLSTATE: HY000 ( ER_FILE_NOT_FOUND) Mensaje: No puedo encontrar archivo: '%s' (Error: %d)

Transcript of 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica...

Page 1: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

26. MANEJO DE ERRORES EN MYSQL

Este capítulo lista los errores que pueden aparecer cuando llama MySQL desde cualquier idioma de equipo. La primera lista muestra los mensajesde error del servidor. La segunda lista muestra los mensajes de los programas clientes.

La información de error del servidor se obtiene de los siguientes archivos:

· Los valores de error y los símbolos en paréntesis se corresponden con las definiciones en el fichero fuente de MySQLinclude/mysqld_error.h.

· Los valores SQLSTATE se corresponden con las definiciones en el fichero fuente de MySQL include/sql_state.h.

· Los valores de Mensaje se corresponden con los mensajes de error que pueden encontrarse listados en el fichero share/errmsg.txt .%d y %s representan números y cadenas de caracteres, respectivamente, que se substituyen en los mensajes cuando se muestran.

Como las actualizaciones son frecuentes, es posible que estos ficheros contengan información de error adicional que no está listada aquí.

· Error: 1000 SQLSTATE: HY000 (ER_HASHCHK)

Mensaje: hashchk

· Error: 1001 SQLSTATE: HY000 (ER_NISAMCHK)

Mensaje: isamchk

· Error: 1002 SQLSTATE: HY000 (ER_NO)

Mensaje: NO

· Error: 1003 SQLSTATE: HY000 (ER_YES)

Mensaje: SI

· Error: 1004 SQLSTATE: HY000 (ER_CANT_CREATE_FILE)

Mensaje: No puedo crear archivo '%s' (Error: %d)

· Error: 1005 SQLSTATE: HY000 (ER_CANT_CREATE_TABLE)

Mensaje: No puedo crear tabla '%s' (Error: %d)

· Error: 1006 SQLSTATE: HY000 (ER_CANT_CREATE_DB)

Mensaje: No puedo crear base de datos '%s' (Error: %d)

· Error: 1007 SQLSTATE: HY000 (ER_DB_CREATE_EXISTS)

Mensaje: No puedo crear base de datos '%s'; la base de datos ya existe

· Error: 1008 SQLSTATE: HY000 (ER_DB_DROP_EXISTS)

Mensaje: No puedo eliminar base de datos '%s'; la base de datos no existe

· Error: 1009 SQLSTATE: HY000 (ER_DB_DROP_DELETE)

Mensaje: Error eliminando la base de datos(no puedo borrar '%s', error %d)

· Error: 1010 SQLSTATE: HY000 (ER_DB_DROP_RMDIR)

Mensaje: Error eliminando la base de datos (No puedo borrar directorio '%s', error %d)

· Error: 1011 SQLSTATE: HY000 (ER_CANT_DELETE_FILE)

Mensaje: Error en el borrado de '%s' (Error: %d)

· Error: 1012 SQLSTATE: HY000 (ER_CANT_FIND_SYSTEM_REC)

Mensaje: No puedo leer el registro en la tabla del sistema

· Error: 1013 SQLSTATE: HY000 (ER_CANT_GET_STAT)

Mensaje: No puedo obtener el estado de '%s' (Error: %d)

· Error: 1014 SQLSTATE: HY000 (ER_CANT_GET_WD)

Mensaje: No puedo acceder al directorio (Error: %d)

· Error: 1015 SQLSTATE: HY000 (ER_CANT_LOCK)

Mensaje: No puedo bloquear archivo: (Error: %d)

· Error: 1016 SQLSTATE: HY000 (ER_CANT_OPEN_FILE)

Mensaje: No puedo abrir archivo: '%s' (Error: %d)

· Error: 1017 SQLSTATE: HY000 (ER_FILE_NOT_FOUND)

Mensaje: No puedo encontrar archivo: '%s' (Error: %d)

Page 2: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1018 SQLSTATE: HY000 (ER_CANT_READ_DIR)

Mensaje: No puedo leer el directorio de '%s' (Error: %d)

· Error: 1019 SQLSTATE: HY000 (ER_CANT_SET_WD)

Mensaje: No puedo cambiar al directorio de '%s' (Error: %d)

· Error: 1020 SQLSTATE: HY000 (ER_CHECKREAD)

Mensaje: El registro ha cambiado desde la ultima lectura de la tabla '%s'

· Error: 1021 SQLSTATE: HY000 (ER_DISK_FULL)

Mensaje: Disco lleno (%s). Esperando para que se libere algo de espacio...

· Error: 1022 SQLSTATE: 23000 (ER_DUP_KEY)

Mensaje: No puedo escribir, clave duplicada en la tabla '%s'

· Error: 1023 SQLSTATE: HY000 (ER_ERROR_ON_CLOSE)

Mensaje: Error en el cierre de '%s' (Error: %d)

· Error: 1024 SQLSTATE: HY000 (ER_ERROR_ON_READ)

Mensaje: Error leyendo el fichero '%s' (Error: %d)

· Error: 1025 SQLSTATE: HY000 (ER_ERROR_ON_RENAME)

Mensaje: Error en el renombrado de '%s' a '%s' (Error: %d)

· Error: 1026 SQLSTATE: HY000 (ER_ERROR_ON_WRITE)

Mensaje: Error escribiendo el archivo '%s' (Error: %d)

· Error: 1027 SQLSTATE: HY000 (ER_FILE_USED)

Mensaje: '%s' esta bloqueado contra cambios

· Error: 1028 SQLSTATE: HY000 (ER_FILSORT_ABORT)

Mensaje: Ordeancion cancelada

· Error: 1029 SQLSTATE: HY000 (ER_FORM_NOT_FOUND)

Mensaje: La vista '%s' no existe para '%s'

· Error: 1030 SQLSTATE: HY000 (ER_GET_ERRNO)

Mensaje: Error %d desde el manejador de la tabla

· Error: 1031 SQLSTATE: HY000 (ER_ILLEGAL_HA)

Mensaje: El manejador de la tabla de '%s' no tiene esta opcion

· Error: 1032 SQLSTATE: HY000 (ER_KEY_NOT_FOUND)

Mensaje: No puedo encontrar el registro en '%s'

· Error: 1033 SQLSTATE: HY000 (ER_NOT_FORM_FILE)

Mensaje: Informacion erronea en el archivo: '%s'

· Error: 1034 SQLSTATE: HY000 (ER_NOT_KEYFILE)

Mensaje: Clave de archivo erronea para la tabla: '%s'; intente repararlo

· Error: 1035 SQLSTATE: HY000 (ER_OLD_KEYFILE)

Mensaje: Clave de archivo antigua para la tabla '%s'; reparelo!

· Error: 1036 SQLSTATE: HY000 (ER_OPEN_AS_READONLY)

Mensaje: '%s' es de solo lectura

· Error: 1037 SQLSTATE: HY001 (ER_OUTOFMEMORY)

Mensaje: Memoria insuficiente. Reinicie el demonio e intentelo otra vez (necesita %d bytes)

· Error: 1038 SQLSTATE: HY001 (ER_OUT_OF_SORTMEMORY)

Mensaje: Memoria de ordenacion insuficiente. Incremente el tamano del buffer de ordenacion

· Error: 1039 SQLSTATE: HY000 (ER_UNEXPECTED_EOF)

Mensaje: Inesperado fin de ficheroU mientras leiamos el archivo '%s' (Error: %d)

· Error: 1040 SQLSTATE: 08004 (ER_CON_COUNT_ERROR)

Page 3: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Demasiadas conexiones

· Error: 1041 SQLSTATE: HY000 (ER_OUT_OF_RESOURCES)

Mensaje: Memoria/espacio de tranpaso insuficiente

· Error: 1042 SQLSTATE: 08S01 (ER_BAD_HOST_ERROR)

Mensaje: No puedo obtener el nombre de maquina de tu direccion

· Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR)

Mensaje: Protocolo erroneo

· Error: 1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR)

Mensaje: Acceso negado para usuario: '%s'@'%s' para la base de datos '%s'

· Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR)

Mensaje: Acceso negado para usuario: '%s'@'%s' (Usando clave: %s)

· Error: 1046 SQLSTATE: 3D000 (ER_NO_DB_ERROR)

Mensaje: Base de datos no seleccionada

· Error: 1047 SQLSTATE: 08S01 (ER_UNKNOWN_COM_ERROR)

Mensaje: Comando desconocido

· Error: 1048 SQLSTATE: 23000 (ER_BAD_NULL_ERROR)

Mensaje: La columna '%s' no puede ser nula

· Error: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR)

Mensaje: Base de datos desconocida '%s'

· Error: 1050 SQLSTATE: 42S01 (ER_TABLE_EXISTS_ERROR)

Mensaje: La tabla '%s' ya existe

· Error: 1051 SQLSTATE: 42S02 (ER_BAD_TABLE_ERROR)

Mensaje: Tabla '%s' desconocida

· Error: 1052 SQLSTATE: 23000 (ER_NON_UNIQ_ERROR)

Mensaje: La columna: '%s' en %s es ambigua

· Error: 1053 SQLSTATE: 08S01 (ER_SERVER_SHUTDOWN)

Mensaje: Desconexion de servidor en proceso

· Error: 1054 SQLSTATE: 42S22 (ER_BAD_FIELD_ERROR)

Mensaje: La columna '%s' en %s es desconocida

· Error: 1055 SQLSTATE: 42000 (ER_WRONG_FIELD_WITH_GROUP)

Mensaje: Usado '%s' el cual no esta group by

· Error: 1056 SQLSTATE: 42000 (ER_WRONG_GROUP_FIELD)

Mensaje: No puedo agrupar por '%s'

· Error: 1057 SQLSTATE: 42000 (ER_WRONG_SUM_SELECT)

Mensaje: El estamento tiene funciones de suma y columnas en el mismo estamento

· Error: 1058 SQLSTATE: 21S01 (ER_WRONG_VALUE_COUNT)

Mensaje: La columna con count no tiene valores para contar

· Error: 1059 SQLSTATE: 42000 (ER_TOO_LONG_IDENT)

Mensaje: El nombre del identificador '%s' es demasiado grande

· Error: 1060 SQLSTATE: 42S21 (ER_DUP_FIELDNAME)

Mensaje: Nombre de columna duplicado '%s'

· Error: 1061 SQLSTATE: 42000 (ER_DUP_KEYNAME)

Mensaje: Nombre de clave duplicado '%s'

· Error: 1062 SQLSTATE: 23000 (ER_DUP_ENTRY)

Mensaje: Entrada duplicada '%s' para la clave %d

Page 4: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1063 SQLSTATE: 42000 (ER_WRONG_FIELD_SPEC)

Mensaje: Especificador de columna erroneo para la columna '%s'

· Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)

Mensaje: %s cerca '%s' en la linea %d

· Error: 1065 SQLSTATE: 42000 (ER_EMPTY_QUERY)

Mensaje: La query estaba vacia

· Error: 1066 SQLSTATE: 42000 (ER_NONUNIQ_TABLE)

Mensaje: Tabla/alias: '%s' es no unica

· Error: 1067 SQLSTATE: 42000 (ER_INVALID_DEFAULT)

Mensaje: Valor por defecto invalido para '%s'

· Error: 1068 SQLSTATE: 42000 (ER_MULTIPLE_PRI_KEY)

Mensaje: Multiples claves primarias definidas

· Error: 1069 SQLSTATE: 42000 (ER_TOO_MANY_KEYS)

Mensaje: Demasiadas claves primarias declaradas. Un maximo de %d claves son permitidas

· Error: 1070 SQLSTATE: 42000 (ER_TOO_MANY_KEY_PARTS)

Mensaje: Demasiadas partes de clave declaradas. Un maximo de %d partes son permitidas

· Error: 1071 SQLSTATE: 42000 (ER_TOO_LONG_KEY)

Mensaje: Declaracion de clave demasiado larga. La maxima longitud de clave es %d

· Error: 1072 SQLSTATE: 42000 (ER_KEY_COLUMN_DOES_NOT_EXITS)

Mensaje: La columna clave '%s' no existe en la tabla

· Error: 1073 SQLSTATE: 42000 (ER_BLOB_USED_AS_KEY)

Mensaje: La columna Blob '%s' no puede ser usada en una declaracion de clave

· Error: 1074 SQLSTATE: 42000 (ER_TOO_BIG_FIELDLENGTH)

Mensaje: Longitud de columna demasiado grande para la columna '%s' (maximo = %lu).Usar BLOB en su lugar

· Error: 1075 SQLSTATE: 42000 (ER_WRONG_AUTO_KEY)

Mensaje: Puede ser solamente un campo automatico y este debe ser definido como una clave

· Error: 1076 SQLSTATE: HY000 (ER_READY)

Mensaje: %s: preparado para conexiones Version: '%s' socket: '%s' port: %d

· Error: 1077 SQLSTATE: HY000 (ER_NORMAL_SHUTDOWN)

Mensaje: %s: Apagado normal

· Error: 1078 SQLSTATE: HY000 (ER_GOT_SIGNAL)

Mensaje: %s: Recibiendo signal %d. Abortando!

· Error: 1079 SQLSTATE: HY000 (ER_SHUTDOWN_COMPLETE)

Mensaje: %s: Apagado completado

· Error: 1080 SQLSTATE: 08S01 (ER_FORCING_CLOSE)

Mensaje: %s: Forzando a cerrar el thread %ld usuario: '%s'

· Error: 1081 SQLSTATE: 08S01 (ER_IPSOCK_ERROR)

Mensaje: No puedo crear IP socket

· Error: 1082 SQLSTATE: 42S12 (ER_NO_SUCH_INDEX)

Mensaje: La tabla '%s' no tiene indice como el usado en CREATE INDEX. Crea de nuevo la tabla

· Error: 1083 SQLSTATE: 42000 (ER_WRONG_FIELD_TERMINATORS)

Mensaje: Los separadores de argumentos del campo no son los especificados. Comprueba el manual

· Error: 1084 SQLSTATE: 42000 (ER_BLOBS_AND_NO_TERMINATED)

Mensaje: No puedes usar longitudes de filas fijos con BLOBs. Por favor usa 'campos terminados por '.

· Error: 1085 SQLSTATE: HY000 (ER_TEXTFILE_NOT_READABLE)

Page 5: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: El archivo '%s' debe estar en el directorio de la base de datos o ser de lectura por todos

· Error: 1086 SQLSTATE: HY000 (ER_FILE_EXISTS_ERROR)

Mensaje: El archivo '%s' ya existe

· Error: 1087 SQLSTATE: HY000 (ER_LOAD_INFO)

Mensaje: Registros: %ld Borrados: %ld Saltados: %ld Peligros: %ld

· Error: 1088 SQLSTATE: HY000 (ER_ALTER_INFO)

Mensaje: Registros: %ld Duplicados: %ld

· Error: 1089 SQLSTATE: HY000 (ER_WRONG_SUB_KEY)

Mensaje: Parte de la clave es erronea. Una parte de la clave no es una cadena o la longitud usada es tan grande como la parte de laclave

· Error: 1090 SQLSTATE: 42000 (ER_CANT_REMOVE_ALL_FIELDS)

Mensaje: No puede borrar todos los campos con ALTER TABLE. Usa DROP TABLE para hacerlo

· Error: 1091 SQLSTATE: 42000 (ER_CANT_DROP_FIELD_OR_KEY)

Mensaje: No puedo ELIMINAR '%s'. compuebe que el campo/clave existe

· Error: 1092 SQLSTATE: HY000 (ER_INSERT_INFO)

Mensaje: Registros: %ld Duplicados: %ld Peligros: %ld

· Error: 1093 SQLSTATE: HY000 (ER_UPDATE_TABLE_USED)

Mensaje: You can't specify target table '%s' for update in FROM clause

· Error: 1094 SQLSTATE: HY000 (ER_NO_SUCH_THREAD)

Mensaje: Identificador del thread: %lu desconocido

· Error: 1095 SQLSTATE: HY000 (ER_KILL_DENIED_ERROR)

Mensaje: Tu no eres el propietario del thread%lu

· Error: 1096 SQLSTATE: HY000 (ER_NO_TABLES_USED)

Mensaje: No ha tablas usadas

· Error: 1097 SQLSTATE: HY000 (ER_TOO_BIG_SET)

Mensaje: Muchas strings para columna %s y SET

· Error: 1098 SQLSTATE: HY000 (ER_NO_UNIQUE_LOGFILE)

Mensaje: No puede crear un unico archivo log %s.(1-999)

· Error: 1099 SQLSTATE: HY000 (ER_TABLE_NOT_LOCKED_FOR_WRITE)

Mensaje: Tabla '%s' fue trabada con un READ lock y no puede ser actualizada

· Error: 1100 SQLSTATE: HY000 (ER_TABLE_NOT_LOCKED)

Mensaje: Tabla '%s' no fue trabada con LOCK TABLES

· Error: 1101 SQLSTATE: 42000 (ER_BLOB_CANT_HAVE_DEFAULT)

Mensaje: Campo Blob '%s' no puede tener valores patron

· Error: 1102 SQLSTATE: 42000 (ER_WRONG_DB_NAME)

Mensaje: Nombre de base de datos ilegal '%s'

· Error: 1103 SQLSTATE: 42000 (ER_WRONG_TABLE_NAME)

Mensaje: Nombre de tabla ilegal '%s'

· Error: 1104 SQLSTATE: 42000 (ER_TOO_BIG_SELECT)

Mensaje: El SELECT puede examinar muchos registros y probablemente con mucho tiempo. Verifique tu WHERE y usa SETSQL_BIG_SELECTS=1 si el SELECT esta correcto

· Error: 1105 SQLSTATE: HY000 (ER_UNKNOWN_ERROR)

Mensaje: Error desconocido

· Error: 1106 SQLSTATE: 42000 (ER_UNKNOWN_PROCEDURE)

Mensaje: Procedimiento desconocido %s

· Error: 1107 SQLSTATE: 42000 (ER_WRONG_PARAMCOUNT_TO_PROCEDURE)

Page 6: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Equivocado parametro count para procedimiento %s

· Error: 1108 SQLSTATE: HY000 (ER_WRONG_PARAMETERS_TO_PROCEDURE)

Mensaje: Equivocados parametros para procedimiento %s

· Error: 1109 SQLSTATE: 42S02 (ER_UNKNOWN_TABLE)

Mensaje: Tabla desconocida '%s' in %s

· Error: 1110 SQLSTATE: 42000 (ER_FIELD_SPECIFIED_TWICE)

Mensaje: Campo '%s' especificado dos veces

· Error: 1111 SQLSTATE: HY000 (ER_INVALID_GROUP_FUNC_USE)

Mensaje: Invalido uso de función en grupo

· Error: 1112 SQLSTATE: 42000 (ER_UNSUPPORTED_EXTENSION)

Mensaje: Tabla '%s' usa una extensión que no existe en esta MySQL versión

· Error: 1113 SQLSTATE: 42000 (ER_TABLE_MUST_HAVE_COLUMNS)

Mensaje: Una tabla debe tener al menos 1 columna

· Error: 1114 SQLSTATE: HY000 (ER_RECORD_FILE_FULL)

Mensaje: La tabla '%s' está llena

· Error: 1115 SQLSTATE: 42000 (ER_UNKNOWN_CHARACTER_SET)

Mensaje: Juego de caracteres desconocido: '%s'

· Error: 1116 SQLSTATE: HY000 (ER_TOO_MANY_TABLES)

Mensaje: Muchas tablas. MySQL solamente puede usar %d tablas en un join

· Error: 1117 SQLSTATE: HY000 (ER_TOO_MANY_FIELDS)

Mensaje: Muchos campos

· Error: 1118 SQLSTATE: 42000 (ER_TOO_BIG_ROWSIZE)

Mensaje: Tamaño de línea muy grande. Máximo tamaño de línea, no contando blob, es %ld. Tu tienes que cambiar algunos campos parablob

· Error: 1119 SQLSTATE: HY000 (ER_STACK_OVERRUN)

Mensaje: Sobrecarga de la pila de thread: Usada: %ld de una %ld pila. Use 'mysqld -O thread_stack=#' para especificar una mayor pila sinecesario

· Error: 1120 SQLSTATE: 42000 (ER_WRONG_OUTER_JOIN)

Mensaje: Dependencia cruzada encontrada en OUTER JOIN. Examine su condición ON

· Error: 1121 SQLSTATE: 42000 (ER_NULL_COLUMN_IN_INDEX)

Mensaje: Columna '%s' es usada con UNIQUE o INDEX pero no está definida como NOT NULL

· Error: 1122 SQLSTATE: HY000 (ER_CANT_FIND_UDF)

Mensaje: No puedo cargar función '%s'

· Error: 1123 SQLSTATE: HY000 (ER_CANT_INITIALIZE_UDF)

Mensaje: No puedo inicializar función '%s'; %s

· Error: 1124 SQLSTATE: HY000 (ER_UDF_NO_PATHS)

Mensaje: No pasos permitidos para librarias conjugadas

· Error: 1125 SQLSTATE: HY000 (ER_UDF_EXISTS)

Mensaje: Función '%s' ya existe

· Error: 1126 SQLSTATE: HY000 (ER_CANT_OPEN_LIBRARY)

Mensaje: No puedo abrir libraria conjugada '%s' (errno: %d %s)

· Error: 1127 SQLSTATE: HY000 (ER_CANT_FIND_DL_ENTRY)

Mensaje: No puedo encontrar función '%s' en libraria

· Error: 1128 SQLSTATE: HY000 (ER_FUNCTION_NOT_DEFINED)

Mensaje: Función '%s' no está definida

· Error: 1129 SQLSTATE: HY000 (ER_HOST_IS_BLOCKED)

Page 7: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Servidor '%s' está bloqueado por muchos errores de conexión. Desbloquear con 'mysqladmin flush-hosts'

· Error: 1130 SQLSTATE: HY000 (ER_HOST_NOT_PRIVILEGED)

Mensaje: Servidor '%s' no está permitido para conectar con este servidor MySQL

· Error: 1131 SQLSTATE: 42000 (ER_PASSWORD_ANONYMOUS_USER)

Mensaje: Tu estás usando MySQL como un usuario anonimo y usuarios anonimos no tienen permiso para cambiar las claves

· Error: 1132 SQLSTATE: 42000 (ER_PASSWORD_NOT_ALLOWED)

Mensaje: Tu debes de tener permiso para actualizar tablas en la base de datos mysql para cambiar las claves para otros

· Error: 1133 SQLSTATE: 42000 (ER_PASSWORD_NO_MATCH)

Mensaje: No puedo encontrar una línea correponsdiente en la tabla user

· Error: 1134 SQLSTATE: HY000 (ER_UPDATE_INFO)

Mensaje: Líneas correspondientes: %ld Cambiadas: %ld Avisos: %ld

· Error: 1135 SQLSTATE: HY000 (ER_CANT_CREATE_THREAD)

Mensaje: No puedo crear un nuevo thread (errno %d). Si tu está con falta de memoria disponible, tu puedes consultar el Manual paraposibles problemas con SO

· Error: 1136 SQLSTATE: 21S01 (ER_WRONG_VALUE_COUNT_ON_ROW)

Mensaje: El número de columnas no corresponde al número en la línea %ld

· Error: 1137 SQLSTATE: HY000 (ER_CANT_REOPEN_TABLE)

Mensaje: No puedo reabrir tabla: '%s

· Error: 1138 SQLSTATE: 22004 (ER_INVALID_USE_OF_NULL)

Mensaje: Invalido uso de valor NULL

· Error: 1139 SQLSTATE: 42000 (ER_REGEXP_ERROR)

Mensaje: Obtenido error '%s' de regexp

· Error: 1140 SQLSTATE: 42000 (ER_MIX_OF_GROUP_FUNC_AND_FIELDS)

Mensaje: Mezcla de columnas GROUP (MIN(),MAX(),COUNT()...) con no GROUP columnas es ilegal si no hat la clausula GROUP BY

· Error: 1141 SQLSTATE: 42000 (ER_NONEXISTING_GRANT)

Mensaje: No existe permiso definido para usuario '%s' en el servidor '%s'

· Error: 1142 SQLSTATE: 42000 (ER_TABLEACCESS_DENIED_ERROR)

Mensaje: %s comando negado para usuario: '%s'@'%s' para tabla '%s'

· Error: 1143 SQLSTATE: 42000 (ER_COLUMNACCESS_DENIED_ERROR)

Mensaje: %s comando negado para usuario: '%s'@'%s' para columna '%s' en la tabla '%s'

· Error: 1144 SQLSTATE: 42000 (ER_ILLEGAL_GRANT_FOR_TABLE)

Mensaje: Ilegal comando GRANT/REVOKE. Por favor consulte el manual para cuales permisos pueden ser usados.

· Error: 1145 SQLSTATE: 42000 (ER_GRANT_WRONG_HOST_OR_USER)

Mensaje: El argumento para servidor o usuario para GRANT es demasiado grande

· Error: 1146 SQLSTATE: 42S02 (ER_NO_SUCH_TABLE)

Mensaje: Tabla '%s.%s' no existe

· Error: 1147 SQLSTATE: 42000 (ER_NONEXISTING_TABLE_GRANT)

Mensaje: No existe tal permiso definido para usuario '%s' en el servidor '%s' en la tabla '%s'

· Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)

Mensaje: El comando usado no es permitido con esta versión de MySQL

· Error: 1149 SQLSTATE: 42000 (ER_SYNTAX_ERROR)

Mensaje: Algo está equivocado en su sintax

· Error: 1150 SQLSTATE: HY000 (ER_DELAYED_CANT_CHANGE_LOCK)

Mensaje: Thread de inserción retarda no pudiendo bloquear para la tabla %s

· Error: 1151 SQLSTATE: HY000 (ER_TOO_MANY_DELAYED_THREADS)

Mensaje: Muchos threads retardados en uso

Page 8: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1152 SQLSTATE: 08S01 (ER_ABORTING_CONNECTION)

Mensaje: Conexión abortada %ld para db: '%s' usuario: '%s' (%s)

· Error: 1153 SQLSTATE: 08S01 (ER_NET_PACKET_TOO_LARGE)

Mensaje: Obtenido un paquete mayor que 'max_allowed_packet'

· Error: 1154 SQLSTATE: 08S01 (ER_NET_READ_ERROR_FROM_PIPE)

Mensaje: Obtenido un error de lectura de la conexión pipe

· Error: 1155 SQLSTATE: 08S01 (ER_NET_FCNTL_ERROR)

Mensaje: Obtenido un error de fcntl()

· Error: 1156 SQLSTATE: 08S01 (ER_NET_PACKETS_OUT_OF_ORDER)

Mensaje: Obtenido paquetes desordenados

· Error: 1157 SQLSTATE: 08S01 (ER_NET_UNCOMPRESS_ERROR)

Mensaje: No puedo descomprimir paquetes de comunicación

· Error: 1158 SQLSTATE: 08S01 (ER_NET_READ_ERROR)

Mensaje: Obtenido un error leyendo paquetes de comunicación

· Error: 1159 SQLSTATE: 08S01 (ER_NET_READ_INTERRUPTED)

Mensaje: Obtenido timeout leyendo paquetes de comunicación

· Error: 1160 SQLSTATE: 08S01 (ER_NET_ERROR_ON_WRITE)

Mensaje: Obtenido un error de escribiendo paquetes de comunicación

· Error: 1161 SQLSTATE: 08S01 (ER_NET_WRITE_INTERRUPTED)

Mensaje: Obtenido timeout escribiendo paquetes de comunicación

· Error: 1162 SQLSTATE: 42000 (ER_TOO_LONG_STRING)

Mensaje: La string resultante es mayor que max_allowed_packet

· Error: 1163 SQLSTATE: 42000 (ER_TABLE_CANT_HANDLE_BLOB)

Mensaje: El tipo de tabla usada no permite soporte para columnas BLOB/TEXT

· Error: 1164 SQLSTATE: 42000 (ER_TABLE_CANT_HANDLE_AUTO_INCREMENT)

Mensaje: El tipo de tabla usada no permite soporte para columnas AUTO_INCREMENT

· Error: 1165 SQLSTATE: HY000 (ER_DELAYED_INSERT_TABLE_LOCKED)

Mensaje: INSERT DELAYED no puede ser usado con tablas '%s', porque esta bloqueada con LOCK TABLES

· Error: 1166 SQLSTATE: 42000 (ER_WRONG_COLUMN_NAME)

Mensaje: Incorrecto nombre de columna '%s'

· Error: 1167 SQLSTATE: 42000 (ER_WRONG_KEY_COLUMN)

Mensaje: El manipulador de tabla usado no puede indexar columna '%s'

· Error: 1168 SQLSTATE: HY000 (ER_WRONG_MRG_TABLE)

Mensaje: Todas las tablas en la MERGE tabla no estan definidas identicamente

· Error: 1169 SQLSTATE: 23000 (ER_DUP_UNIQUE)

Mensaje: No puedo escribir, debido al único constraint, para tabla '%s'

· Error: 1170 SQLSTATE: 42000 (ER_BLOB_KEY_WITHOUT_LENGTH)

Mensaje: Columna BLOB column '%s' usada en especificación de clave sin tamaño de la clave

· Error: 1171 SQLSTATE: 42000 (ER_PRIMARY_CANT_HAVE_NULL)

Mensaje: Todas las partes de un PRIMARY KEY deben ser NOT NULL; Si necesitas NULL en una clave, use UNIQUE

· Error: 1172 SQLSTATE: 42000 (ER_TOO_MANY_ROWS)

Mensaje: Resultado compuesto de mas que una línea

· Error: 1173 SQLSTATE: 42000 (ER_REQUIRES_PRIMARY_KEY)

Mensaje: Este tipo de tabla necesita de una primary key

· Error: 1174 SQLSTATE: HY000 (ER_NO_RAID_COMPILED)

Page 9: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Esta versión de MySQL no es compilada con soporte RAID

· Error: 1175 SQLSTATE: HY000 (ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE)

Mensaje: Tu estás usando modo de actualización segura y tentado actualizar una tabla sin un WHERE que usa una KEY columna

· Error: 1176 SQLSTATE: HY000 (ER_KEY_DOES_NOT_EXITS)

Mensaje: Clave '%s' no existe en la tabla '%s'

· Error: 1177 SQLSTATE: 42000 (ER_CHECK_NO_SUCH_TABLE)

Mensaje: No puedo abrir tabla

· Error: 1178 SQLSTATE: 42000 (ER_CHECK_NOT_IMPLEMENTED)

Mensaje: El manipulador de la tabla no permite soporte para %s

· Error: 1179 SQLSTATE: 25000 (ER_CANT_DO_THIS_DURING_AN_TRANSACTION)

Mensaje: No tienes el permiso para ejecutar este comando en una transición

· Error: 1180 SQLSTATE: HY000 (ER_ERROR_DURING_COMMIT)

Mensaje: Obtenido error %d durante COMMIT

· Error: 1181 SQLSTATE: HY000 (ER_ERROR_DURING_ROLLBACK)

Mensaje: Obtenido error %d durante ROLLBACK

· Error: 1182 SQLSTATE: HY000 (ER_ERROR_DURING_FLUSH_LOGS)

Mensaje: Obtenido error %d durante FLUSH_LOGS

· Error: 1183 SQLSTATE: HY000 (ER_ERROR_DURING_CHECKPOINT)

Mensaje: Obtenido error %d durante CHECKPOINT

· Error: 1184 SQLSTATE: 08S01 (ER_NEW_ABORTING_CONNECTION)

Mensaje: Abortada conexión %ld para db: '%s' usuario: '%s' servidor: '%s' (%s)

· Error: 1185 SQLSTATE: HY000 (ER_DUMP_NOT_IMPLEMENTED)

Mensaje: El manipulador de tabla no soporta dump para tabla binaria

· Error: 1186 SQLSTATE: HY000 (ER_FLUSH_MASTER_BINLOG_CLOSED)

Mensaje: Binlog closed, cannot RESET MASTER

· Error: 1187 SQLSTATE: HY000 (ER_INDEX_REBUILD)

Mensaje: Falla reconstruyendo el indice de la tabla dumped '%s'

· Error: 1188 SQLSTATE: HY000 (ER_MASTER)

Mensaje: Error del master: '%s'

· Error: 1189 SQLSTATE: 08S01 (ER_MASTER_NET_READ)

Mensaje: Error de red leyendo del master

· Error: 1190 SQLSTATE: 08S01 (ER_MASTER_NET_WRITE)

Mensaje: Error de red escribiendo para el master

· Error: 1191 SQLSTATE: HY000 (ER_FT_MATCHING_KEY_NOT_FOUND)

Mensaje: No puedo encontrar índice FULLTEXT correspondiendo a la lista de columnas

· Error: 1192 SQLSTATE: HY000 (ER_LOCK_OR_ACTIVE_TRANSACTION)

Mensaje: No puedo ejecutar el comando dado porque tienes tablas bloqueadas o una transición activa

· Error: 1193 SQLSTATE: HY000 (ER_UNKNOWN_SYSTEM_VARIABLE)

Mensaje: Desconocida variable de sistema '%s'

· Error: 1194 SQLSTATE: HY000 (ER_CRASHED_ON_USAGE)

Mensaje: Tabla '%s' está marcada como crashed y debe ser reparada

· Error: 1195 SQLSTATE: HY000 (ER_CRASHED_ON_REPAIR)

Mensaje: Tabla '%s' está marcada como crashed y la última reparación (automactica?) falló

· Error: 1196 SQLSTATE: HY000 (ER_WARNING_NOT_COMPLETE_ROLLBACK)

Mensaje: Aviso: Algunas tablas no transancionales no pueden tener rolled back

Page 10: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1197 SQLSTATE: HY000 (ER_TRANS_CACHE_FULL)

Mensaje: Multipla transición necesita mas que 'max_binlog_cache_size' bytes de almacenamiento. Aumente esta variable mysqld y tentede nuevo

· Error: 1198 SQLSTATE: HY000 (ER_SLAVE_MUST_STOP)

Mensaje: Esta operación no puede ser hecha con el esclavo funcionando, primero use STOP SLAVE

· Error: 1199 SQLSTATE: HY000 (ER_SLAVE_NOT_RUNNING)

Mensaje: Esta operación necesita el esclavo funcionando, configure esclavo y haga el START SLAVE

· Error: 1200 SQLSTATE: HY000 (ER_BAD_SLAVE)

Mensaje: El servidor no está configurado como esclavo, edite el archivo config file o con CHANGE MASTER TO

· Error: 1201 SQLSTATE: HY000 (ER_MASTER_INFO)

Mensaje: Could not initialize master info structure; more error messages can be found in the MySQL error log

· Error: 1202 SQLSTATE: HY000 (ER_SLAVE_THREAD)

Mensaje: No puedo crear el thread esclavo, verifique recursos del sistema

· Error: 1203 SQLSTATE: 42000 (ER_TOO_MANY_USER_CONNECTIONS)

Mensaje: Usario %s ya tiene mas que 'max_user_connections' conexiones activas

· Error: 1204 SQLSTATE: HY000 (ER_SET_CONSTANTS_ONLY)

Mensaje: Tu solo debes usar expresiones constantes con SET

· Error: 1205 SQLSTATE: HY000 (ER_LOCK_WAIT_TIMEOUT)

Mensaje: Tiempo de bloqueo de espera excedido

· Error: 1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL)

Mensaje: El número total de bloqueos excede el tamaño de bloqueo de la tabla

· Error: 1207 SQLSTATE: 25000 (ER_READ_ONLY_TRANSACTION)

Mensaje: Bloqueos de actualización no pueden ser adqueridos durante una transición READ UNCOMMITTED

· Error: 1208 SQLSTATE: HY000 (ER_DROP_DB_WITH_READ_LOCK)

Mensaje: DROP DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global

· Error: 1209 SQLSTATE: HY000 (ER_CREATE_DB_WITH_READ_LOCK)

Mensaje: CREATE DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global

· Error: 1210 SQLSTATE: HY000 (ER_WRONG_ARGUMENTS)

Mensaje: Argumentos errados para %s

· Error: 1211 SQLSTATE: 42000 (ER_NO_PERMISSION_TO_CREATE_USER)

Mensaje: '%s`@`%s` no es permitido para crear nuevos usuarios

· Error: 1212 SQLSTATE: HY000 (ER_UNION_TABLES_IN_DIFFERENT_DIR)

Mensaje: Incorrecta definición de la tabla; Todas las tablas MERGE deben estar en el mismo banco de datos

· Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)

Mensaje: Encontrado deadlock cuando tentando obtener el bloqueo; Tente recomenzar la transición

· Error: 1214 SQLSTATE: HY000 (ER_TABLE_CANT_HANDLE_FT)

Mensaje: El tipo de tabla usada no soporta índices FULLTEXT

· Error: 1215 SQLSTATE: HY000 (ER_CANNOT_ADD_FOREIGN)

Mensaje: No puede adicionar clave extranjera constraint

· Error: 1216 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW)

Mensaje: No puede adicionar una línea hijo: falla de clave extranjera constraint

· Error: 1217 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED)

Mensaje: No puede deletar una línea padre: falla de clave extranjera constraint

· Error: 1218 SQLSTATE: 08S01 (ER_CONNECT_TO_MASTER)

Mensaje: Error de coneccion a master: %s

Page 11: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1219 SQLSTATE: HY000 (ER_QUERY_ON_MASTER)

Mensaje: Error executando el query en master: %s

· Error: 1220 SQLSTATE: HY000 (ER_ERROR_WHEN_EXECUTING_COMMAND)

Mensaje: Error de %s: %s

· Error: 1221 SQLSTATE: HY000 (ER_WRONG_USAGE)

Mensaje: Equivocado uso de %s y %s

· Error: 1222 SQLSTATE: 21000 (ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT)

Mensaje: El comando SELECT usado tiene diferente número de columnas

· Error: 1223 SQLSTATE: HY000 (ER_CANT_UPDATE_WITH_READLOCK)

Mensaje: No puedo ejecutar el query porque usted tiene conflicto de traba de lectura

· Error: 1224 SQLSTATE: HY000 (ER_MIXING_NOT_ALLOWED)

Mensaje: Mezla de transancional y no-transancional tablas está deshabilitada

· Error: 1225 SQLSTATE: HY000 (ER_DUP_ARGUMENT)

Mensaje: Opción '%s' usada dos veces en el comando

· Error: 1226 SQLSTATE: 42000 (ER_USER_LIMIT_REACHED)

Mensaje: Usuario '%s' ha excedido el recurso '%s' (actual valor: %ld)

· Error: 1227 SQLSTATE: 42000 (ER_SPECIFIC_ACCESS_DENIED_ERROR)

Mensaje: Acceso negado. Usted necesita el privilegio %s para esta operación

· Error: 1228 SQLSTATE: HY000 (ER_LOCAL_VARIABLE)

Mensaje: Variable '%s' es una SESSION variable y no puede ser usada con SET GLOBAL

· Error: 1229 SQLSTATE: HY000 (ER_GLOBAL_VARIABLE)

Mensaje: Variable '%s' es una GLOBAL variable y no puede ser configurada con SET GLOBAL

· Error: 1230 SQLSTATE: 42000 (ER_NO_DEFAULT)

Mensaje: Variable '%s' no tiene un valor patrón

· Error: 1231 SQLSTATE: 42000 (ER_WRONG_VALUE_FOR_VAR)

Mensaje: Variable '%s' no puede ser configurada para el valor de '%s'

· Error: 1232 SQLSTATE: 42000 (ER_WRONG_TYPE_FOR_VAR)

Mensaje: Tipo de argumento equivocado para variable '%s'

· Error: 1233 SQLSTATE: HY000 (ER_VAR_CANT_BE_READ)

Mensaje: Variable '%s' solamente puede ser configurada, no leída

· Error: 1234 SQLSTATE: 42000 (ER_CANT_USE_OPTION_HERE)

Mensaje: Equivocado uso/colocación de '%s'

· Error: 1235 SQLSTATE: 42000 (ER_NOT_SUPPORTED_YET)

Mensaje: Esta versión de MySQL no soporta todavia '%s'

· Error: 1236 SQLSTATE: HY000 (ER_MASTER_FATAL_ERROR_READING_BINLOG)

Mensaje: Recibió fatal error %d: '%s' del master cuando leyendo datos del binary log

· Error: 1237 SQLSTATE: HY000 (ER_SLAVE_IGNORED_TABLE)

Mensaje: Slave SQL thread ignorado el query debido a las reglas de replicación-*-tabla

· Error: 1238 SQLSTATE: HY000 (ER_INCORRECT_GLOBAL_LOCAL_VAR)

Mensaje: Variable '%s' es una %s variable

· Error: 1239 SQLSTATE: 42000 (ER_WRONG_FK_DEF)

Mensaje: Equivocada definición de llave extranjera para '%s': %s

· Error: 1240 SQLSTATE: HY000 (ER_KEY_REF_DO_NOT_MATCH_TABLE_REF)

Mensaje: Referencia de llave y referencia de tabla no coinciden

· Error: 1241 SQLSTATE: 21000 (ER_OPERAND_COLUMNS)

Page 12: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Operando debe tener %d columna(s)

· Error: 1242 SQLSTATE: 21000 (ER_SUBQUERY_NO_1_ROW)

Mensaje: Subconsulta retorna mas que 1 línea

· Error: 1243 SQLSTATE: HY000 (ER_UNKNOWN_STMT_HANDLER)

Mensaje: Desconocido preparado comando handler (%.*s) dado para %s

· Error: 1244 SQLSTATE: HY000 (ER_CORRUPT_HELP_DB)

Mensaje: Base de datos Help está corrupto o no existe

· Error: 1245 SQLSTATE: HY000 (ER_CYCLIC_REFERENCE)

Mensaje: Cíclica referencia en subconsultas

· Error: 1246 SQLSTATE: HY000 (ER_AUTO_CONVERT)

Mensaje: Convirtiendo columna '%s' de %s para %s

· Error: 1247 SQLSTATE: 42S22 (ER_ILLEGAL_REFERENCE)

Mensaje: Referencia '%s' no soportada (%s)

· Error: 1248 SQLSTATE: 42000 (ER_DERIVED_MUST_HAVE_ALIAS)

Mensaje: Cada tabla derivada debe tener su propio alias

· Error: 1249 SQLSTATE: 01000 (ER_SELECT_REDUCED)

Mensaje: Select %u fué reducido durante optimización

· Error: 1250 SQLSTATE: 42000 (ER_TABLENAME_NOT_ALLOWED_HERE)

Mensaje: Tabla '%s' de uno de los SELECT no puede ser usada en %s

· Error: 1251 SQLSTATE: 08004 (ER_NOT_SUPPORTED_AUTH_MODE)

Mensaje: Cliente no soporta protocolo de autenticación solicitado por el servidor; considere actualizar el cliente MySQL

· Error: 1252 SQLSTATE: 42000 (ER_SPATIAL_CANT_HAVE_NULL)

Mensaje: Todas las partes de una SPATIAL index deben ser NOT NULL

· Error: 1253 SQLSTATE: 42000 (ER_COLLATION_CHARSET_MISMATCH)

Mensaje: COLLATION '%s' no es válido para CHARACTER SET '%s'

· Error: 1254 SQLSTATE: HY000 (ER_SLAVE_WAS_RUNNING)

Mensaje: Slave ya está funcionando

· Error: 1255 SQLSTATE: HY000 (ER_SLAVE_WAS_NOT_RUNNING)

Mensaje: Slave ya fué parado

· Error: 1256 SQLSTATE: HY000 (ER_TOO_BIG_FOR_UNCOMPRESS)

Mensaje: Tamaño demasiado grande para datos descomprimidos. El máximo tamaño es %d. (probablemente, extensión de datosdescomprimidos fué corrompida)

· Error: 1257 SQLSTATE: HY000 (ER_ZLIB_Z_MEM_ERROR)

Mensaje: Z_MEM_ERROR: No suficiente memoria para zlib

· Error: 1258 SQLSTATE: HY000 (ER_ZLIB_Z_BUF_ERROR)

Mensaje: Z_BUF_ERROR: No suficiente espacio en el búfer de salida para zlib (probablemente, extensión de datos descomprimidos fuécorrompida)

· Error: 1259 SQLSTATE: HY000 (ER_ZLIB_Z_DATA_ERROR)

Mensaje: ZLIB: Dato de entrada fué corrompido para zlib

· Error: 1260 SQLSTATE: HY000 (ER_CUT_VALUE_GROUP_CONCAT)

Mensaje: %d línea(s) fue(fueron) cortadas por group_concat()

· Error: 1261 SQLSTATE: 01000 (ER_WARN_TOO_FEW_RECORDS)

Mensaje: Línea %ld no contiene datos para todas las columnas

· Error: 1262 SQLSTATE: 01000 (ER_WARN_TOO_MANY_RECORDS)

Mensaje: Línea %ld fué truncada; La misma contine mas datos que las que existen en las columnas de entrada

· Error: 1263 SQLSTATE: 22004 (ER_WARN_NULL_TO_NOTNULL)

Page 13: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Datos truncado, NULL suministrado para NOT NULL columna '%s' en la línea %ld

· Error: 1264 SQLSTATE: 22003 (ER_WARN_DATA_OUT_OF_RANGE)

Mensaje: Datos truncados, fuera de gama para columna '%s' en la línea %ld

· Error: 1265 SQLSTATE: 01000 (WARN_DATA_TRUNCATED)

Mensaje: Datos truncados para columna '%s' en la línea %ld

· Error: 1266 SQLSTATE: HY000 (ER_WARN_USING_OTHER_HANDLER)

Mensaje: Usando motor de almacenamiento %s para tabla '%s'

· Error: 1267 SQLSTATE: HY000 (ER_CANT_AGGREGATE_2COLLATIONS)

Mensaje: Ilegal mezcla de collations (%s,%s) y (%s,%s) para operación '%s'

· Error: 1268 SQLSTATE: HY000 (ER_DROP_USER)

Mensaje: Cannot drop one or more of the requested users

· Error: 1269 SQLSTATE: HY000 (ER_REVOKE_GRANTS)

Mensaje: No puede revocar todos los privilegios, derecho para uno o mas de los usuarios solicitados

· Error: 1270 SQLSTATE: HY000 (ER_CANT_AGGREGATE_3COLLATIONS)

Mensaje: Ilegal mezcla de collations (%s,%s), (%s,%s), (%s,%s) para operación '%s'

· Error: 1271 SQLSTATE: HY000 (ER_CANT_AGGREGATE_NCOLLATIONS)

Mensaje: Ilegal mezcla de collations para operación '%s'

· Error: 1272 SQLSTATE: HY000 (ER_VARIABLE_IS_NOT_STRUCT)

Mensaje: Variable '%s' no es una variable componente (No puede ser usada como XXXX.variable_name)

· Error: 1273 SQLSTATE: HY000 (ER_UNKNOWN_COLLATION)

Mensaje: Collation desconocida: '%s'

· Error: 1274 SQLSTATE: HY000 (ER_SLAVE_IGNORED_SSL_PARAMS)

Mensaje: Parametros SSL en CHANGE MASTER son ignorados porque este slave MySQL fue compilado sin soporte SSL; pueden serusados despues cuando el slave MySQL con SSL sea inicializado

· Error: 1275 SQLSTATE: HY000 (ER_SERVER_IS_IN_SECURE_AUTH_MODE)

Mensaje: Servidor está rodando en modo --secure-auth, pero '%s'@'%s' tiene clave en el antiguo formato; por favor cambie la clave parael nuevo formato

· Error: 1276 SQLSTATE: HY000 (ER_WARN_FIELD_RESOLVED)

Mensaje: Campo o referencia '%s%s%s%s%s' de SELECT #%d fue resolvido en SELECT #%d

· Error: 1277 SQLSTATE: HY000 (ER_BAD_SLAVE_UNTIL_COND)

Mensaje: Parametro equivocado o combinación de parametros para START SLAVE UNTIL

· Error: 1278 SQLSTATE: HY000 (ER_MISSING_SKIP_SLAVE)

Mensaje: Es recomendado rodar con --skip-slave-start cuando haciendo replicación step-by-step con START SLAVE UNTIL, a menosque usted no esté seguro en caso de inesperada reinicialización del mysqld slave

· Error: 1279 SQLSTATE: HY000 (ER_UNTIL_COND_IGNORED)

Mensaje: SQL thread no es inicializado tal que opciones UNTIL son ignoradas

· Error: 1280 SQLSTATE: 42000 (ER_WRONG_NAME_FOR_INDEX)

Mensaje: Nombre de índice incorrecto '%s'

· Error: 1281 SQLSTATE: 42000 (ER_WRONG_NAME_FOR_CATALOG)

Mensaje: Nombre de catalog incorrecto '%s'

· Error: 1282 SQLSTATE: HY000 (ER_WARN_QC_RESIZE)

Mensaje: Query cache fallada para configurar tamaño %lu, nuevo tamaño de query cache es %lu

· Error: 1283 SQLSTATE: HY000 (ER_BAD_FT_COLUMN)

Mensaje: Columna '%s' no puede ser parte de FULLTEXT index

· Error: 1284 SQLSTATE: HY000 (ER_UNKNOWN_KEY_CACHE)

Mensaje: Desconocida key cache '%s'

Page 14: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1285 SQLSTATE: HY000 (ER_WARN_HOSTNAME_WONT_WORK)

Mensaje: MySQL esta inicializado en modo --skip-name-resolve. Usted necesita reinicializarlo sin esta opción para este derechofuncionar

· Error: 1286 SQLSTATE: 42000 (ER_UNKNOWN_STORAGE_ENGINE)

Mensaje: Desconocido motor de tabla '%s'

· Error: 1287 SQLSTATE: HY000 (ER_WARN_DEPRECATED_SYNTAX)

Mensaje: '%s' está desaprobado, use '%s' en su lugar

· Error: 1288 SQLSTATE: HY000 (ER_NON_UPDATABLE_TABLE)

Mensaje: La tabla destino %s del %s no es actualizable

· Error: 1289 SQLSTATE: HY000 (ER_FEATURE_DISABLED)

Mensaje: El recurso '%s' fue deshabilitado; usted necesita construir MySQL con '%s' para tener eso funcionando

· Error: 1290 SQLSTATE: HY000 (ER_OPTION_PREVENTS_STATEMENT)

Mensaje: El servidor MySQL está rodando con la opción %s tal que no puede ejecutar este comando

· Error: 1291 SQLSTATE: HY000 (ER_DUPLICATED_VALUE_IN_TYPE)

Mensaje: Columna '%s' tiene valor doblado '%s' en %s

· Error: 1292 SQLSTATE: 22007 (ER_TRUNCATED_WRONG_VALUE)

Mensaje: Equivocado truncado %s valor: '%s'

· Error: 1293 SQLSTATE: HY000 (ER_TOO_MUCH_AUTO_TIMESTAMP_COLS)

Mensaje: Incorrecta definición de tabla; Solamente debe haber una columna TIMESTAMP con CURRENT_TIMESTAMP en DEFAULT oON UPDATE cláusula

· Error: 1294 SQLSTATE: HY000 (ER_INVALID_ON_UPDATE)

Mensaje: Inválido ON UPDATE cláusula para campo '%s'

· Error: 1295 SQLSTATE: HY000 (ER_UNSUPPORTED_PS)

Mensaje: This command is not supported in the prepared statement protocol yet

· Error: 1296 SQLSTATE: HY000 (ER_GET_ERRMSG)

Mensaje: Got error %d '%s' from %s

· Error: 1297 SQLSTATE: HY000 (ER_GET_TEMPORARY_ERRMSG)

Mensaje: Got temporary error %d '%s' from %s

· Error: 1298 SQLSTATE: HY000 (ER_UNKNOWN_TIME_ZONE)

Mensaje: Unknown or incorrect time zone: '%s'

· Error: 1299 SQLSTATE: HY000 (ER_WARN_INVALID_TIMESTAMP)

Mensaje: Invalid TIMESTAMP value in column '%s' at row %ld

· Error: 1300 SQLSTATE: HY000 (ER_INVALID_CHARACTER_STRING)

Mensaje: Invalid %s character string: '%s'

· Error: 1301 SQLSTATE: HY000 (ER_WARN_ALLOWED_PACKET_OVERFLOWED)

Mensaje: Result of %s() was larger than max_allowed_packet (%ld) - truncated

· Error: 1302 SQLSTATE: HY000 (ER_CONFLICTING_DECLARATIONS)

Mensaje: Conflicting declarations: '%s%s' and '%s%s'

· Error: 1303 SQLSTATE: 2F003 (ER_SP_NO_RECURSIVE_CREATE)

Mensaje: Can't create a %s from within another stored routine

· Error: 1304 SQLSTATE: 42000 (ER_SP_ALREADY_EXISTS)

Mensaje: %s %s already exists

· Error: 1305 SQLSTATE: 42000 (ER_SP_DOES_NOT_EXIST)

Mensaje: %s %s does not exist

· Error: 1306 SQLSTATE: HY000 (ER_SP_DROP_FAILED)

Mensaje: Failed to DROP %s %s

Page 15: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1307 SQLSTATE: HY000 (ER_SP_STORE_FAILED)

Mensaje: Failed to CREATE %s %s

· Error: 1308 SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH)

Mensaje: %s with no matching label: %s

· Error: 1309 SQLSTATE: 42000 (ER_SP_LABEL_REDEFINE)

Mensaje: Redefining label %s

· Error: 1310 SQLSTATE: 42000 (ER_SP_LABEL_MISMATCH)

Mensaje: End-label %s without match

· Error: 1311 SQLSTATE: 01000 (ER_SP_UNINIT_VAR)

Mensaje: Referring to uninitialized variable %s

· Error: 1312 SQLSTATE: 0A000 (ER_SP_BADSELECT)

Mensaje: PROCEDURE %s can't return a result set in the given context

· Error: 1313 SQLSTATE: 42000 (ER_SP_BADRETURN)

Mensaje: RETURN is only allowed in a FUNCTION

· Error: 1314 SQLSTATE: 0A000 (ER_SP_BADSTATEMENT)

Mensaje: %s is not allowed in stored procedures

· Error: 1315 SQLSTATE: 42000 (ER_UPDATE_LOG_DEPRECATED_IGNORED)

Mensaje: The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been ignored

· Error: 1316 SQLSTATE: 42000 (ER_UPDATE_LOG_DEPRECATED_TRANSLATED)

Mensaje: The update log is deprecated and replaced by the binary log; SET SQL_LOG_UPDATE has been translated to SETSQL_LOG_BIN

· Error: 1317 SQLSTATE: 70100 (ER_QUERY_INTERRUPTED)

Mensaje: Query execution was interrupted

· Error: 1318 SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS)

Mensaje: Incorrect number of arguments for %s %s; expected %u, got %u

· Error: 1319 SQLSTATE: 42000 (ER_SP_COND_MISMATCH)

Mensaje: Undefined CONDITION: %s

· Error: 1320 SQLSTATE: 42000 (ER_SP_NORETURN)

Mensaje: No RETURN found in FUNCTION %s

· Error: 1321 SQLSTATE: 2F005 (ER_SP_NORETURNEND)

Mensaje: FUNCTION %s ended without RETURN

· Error: 1322 SQLSTATE: 42000 (ER_SP_BAD_CURSOR_QUERY)

Mensaje: Cursor statement must be a SELECT

· Error: 1323 SQLSTATE: 42000 (ER_SP_BAD_CURSOR_SELECT)

Mensaje: Cursor SELECT must not have INTO

· Error: 1324 SQLSTATE: 42000 (ER_SP_CURSOR_MISMATCH)

Mensaje: Undefined CURSOR: %s

· Error: 1325 SQLSTATE: 24000 (ER_SP_CURSOR_ALREADY_OPEN)

Mensaje: Cursor is already open

· Error: 1326 SQLSTATE: 24000 (ER_SP_CURSOR_NOT_OPEN)

Mensaje: Cursor is not open

· Error: 1327 SQLSTATE: 42000 (ER_SP_UNDECLARED_VAR)

Mensaje: Undeclared variable: %s

· Error: 1328 SQLSTATE: HY000 (ER_SP_WRONG_NO_OF_FETCH_ARGS)

Mensaje: Incorrect number of FETCH variables

Page 16: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA)

Mensaje: No data - zero rows fetched, selected, or processed

· Error: 1330 SQLSTATE: 42000 (ER_SP_DUP_PARAM)

Mensaje: Duplicate parameter: %s

· Error: 1331 SQLSTATE: 42000 (ER_SP_DUP_VAR)

Mensaje: Duplicate variable: %s

· Error: 1332 SQLSTATE: 42000 (ER_SP_DUP_COND)

Mensaje: Duplicate condition: %s

· Error: 1333 SQLSTATE: 42000 (ER_SP_DUP_CURS)

Mensaje: Duplicate cursor: %s

· Error: 1334 SQLSTATE: HY000 (ER_SP_CANT_ALTER)

Mensaje: Failed to ALTER %s %s

· Error: 1335 SQLSTATE: 0A000 (ER_SP_SUBSELECT_NYI)

Mensaje: Subselect value not supported

· Error: 1336 SQLSTATE: 0A000 (ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG)

Mensaje: %s is not allowed in stored function or trigger

· Error: 1337 SQLSTATE: 42000 (ER_SP_VARCOND_AFTER_CURSHNDLR)

Mensaje: Variable or condition declaration after cursor or handler declaration

· Error: 1338 SQLSTATE: 42000 (ER_SP_CURSOR_AFTER_HANDLER)

Mensaje: Cursor declaration after handler declaration

· Error: 1339 SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND)

Mensaje: Case not found for CASE statement

· Error: 1340 SQLSTATE: HY000 (ER_FPARSER_TOO_BIG_FILE)

Mensaje: Configuration file '%s' is too big

· Error: 1341 SQLSTATE: HY000 (ER_FPARSER_BAD_HEADER)

Mensaje: Malformed file type header in file '%s'

· Error: 1342 SQLSTATE: HY000 (ER_FPARSER_EOF_IN_COMMENT)

Mensaje: Unexpected end of file while parsing comment '%s'

· Error: 1343 SQLSTATE: HY000 (ER_FPARSER_ERROR_IN_PARAMETER)

Mensaje: Error while parsing parameter '%s' (line: '%s')

· Error: 1344 SQLSTATE: HY000 (ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER)

Mensaje: Unexpected end of file while skipping unknown parameter '%s'

· Error: 1345 SQLSTATE: HY000 (ER_VIEW_NO_EXPLAIN)

Mensaje: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table

· Error: 1346 SQLSTATE: HY000 (ER_FRM_UNKNOWN_TYPE)

Mensaje: File '%s' has unknown type '%s' in its header

· Error: 1347 SQLSTATE: HY000 (ER_WRONG_OBJECT)

Mensaje: '%s.%s' is not %s

· Error: 1348 SQLSTATE: HY000 (ER_NONUPDATEABLE_COLUMN)

Mensaje: Column '%s' is not updatable

· Error: 1349 SQLSTATE: HY000 (ER_VIEW_SELECT_DERIVED)

Mensaje: View's SELECT contains a subquery in the FROM clause

· Error: 1350 SQLSTATE: HY000 (ER_VIEW_SELECT_CLAUSE)

Mensaje: View's SELECT contains a '%s' clause

· Error: 1351 SQLSTATE: HY000 (ER_VIEW_SELECT_VARIABLE)

Page 17: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: View's SELECT contains a variable or parameter

· Error: 1352 SQLSTATE: HY000 (ER_VIEW_SELECT_TMPTABLE)

Mensaje: View's SELECT refers to a temporary table '%s'

· Error: 1353 SQLSTATE: HY000 (ER_VIEW_WRONG_LIST)

Mensaje: View's SELECT and view's field list have different column counts

· Error: 1354 SQLSTATE: HY000 (ER_WARN_VIEW_MERGE)

Mensaje: View merge algorithm can't be used here for now (assumed undefined algorithm)

· Error: 1355 SQLSTATE: HY000 (ER_WARN_VIEW_WITHOUT_KEY)

Mensaje: View being updated does not have complete key of underlying table in it

· Error: 1356 SQLSTATE: HY000 (ER_VIEW_INVALID)

Mensaje: View '%s.%s' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

· Error: 1357 SQLSTATE: HY000 (ER_SP_NO_DROP_SP)

Mensaje: Can't drop or alter a %s from within another stored routine

· Error: 1358 SQLSTATE: HY000 (ER_SP_GOTO_IN_HNDLR)

Mensaje: GOTO is not allowed in a stored procedure handler

· Error: 1359 SQLSTATE: HY000 (ER_TRG_ALREADY_EXISTS)

Mensaje: Trigger already exists

· Error: 1360 SQLSTATE: HY000 (ER_TRG_DOES_NOT_EXIST)

Mensaje: Trigger does not exist

· Error: 1361 SQLSTATE: HY000 (ER_TRG_ON_VIEW_OR_TEMP_TABLE)

Mensaje: Trigger's '%s' is view or temporary table

· Error: 1362 SQLSTATE: HY000 (ER_TRG_CANT_CHANGE_ROW)

Mensaje: Updating of %s row is not allowed in %strigger

· Error: 1363 SQLSTATE: HY000 (ER_TRG_NO_SUCH_ROW_IN_TRG)

Mensaje: There is no %s row in %s trigger

· Error: 1364 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_FIELD)

Mensaje: Field '%s' doesn't have a default value

· Error: 1365 SQLSTATE: 22012 (ER_DIVISION_BY_ZERO)

Mensaje: Division by 0

· Error: 1366 SQLSTATE: HY000 (ER_TRUNCATED_WRONG_VALUE_FOR_FIELD)

Mensaje: Incorrect %s value: '%s' for column '%s' at row %ld

· Error: 1367 SQLSTATE: 22007 (ER_ILLEGAL_VALUE_FOR_TYPE)

Mensaje: Illegal %s '%s' value found during parsing

· Error: 1368 SQLSTATE: HY000 (ER_VIEW_NONUPD_CHECK)

Mensaje: CHECK OPTION on non-updatable view '%s.%s'

· Error: 1369 SQLSTATE: HY000 (ER_VIEW_CHECK_FAILED)

Mensaje: CHECK OPTION failed '%s.%s'

· Error: 1370 SQLSTATE: 42000 (ER_PROCACCESS_DENIED_ERROR)

Mensaje: %s command denied to user '%s'@'%s' for routine '%s'

· Error: 1371 SQLSTATE: HY000 (ER_RELAY_LOG_FAIL)

Mensaje: Failed purging old relay logs: %s

· Error: 1372 SQLSTATE: HY000 (ER_PASSWD_LENGTH)

Mensaje: Password hash should be a %d-digit hexadecimal number

· Error: 1373 SQLSTATE: HY000 (ER_UNKNOWN_TARGET_BINLOG)

Mensaje: Target log not found in binlog index

Page 18: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1374 SQLSTATE: HY000 (ER_IO_ERR_LOG_INDEX_READ)

Mensaje: I/O error reading log index file

· Error: 1375 SQLSTATE: HY000 (ER_BINLOG_PURGE_PROHIBITED)

Mensaje: Server configuration does not permit binlog purge

· Error: 1376 SQLSTATE: HY000 (ER_FSEEK_FAIL)

Mensaje: Failed on fseek()

· Error: 1377 SQLSTATE: HY000 (ER_BINLOG_PURGE_FATAL_ERR)

Mensaje: Fatal error during log purge

· Error: 1378 SQLSTATE: HY000 (ER_LOG_IN_USE)

Mensaje: A purgeable log is in use, will not purge

· Error: 1379 SQLSTATE: HY000 (ER_LOG_PURGE_UNKNOWN_ERR)

Mensaje: Unknown error during log purge

· Error: 1380 SQLSTATE: HY000 (ER_RELAY_LOG_INIT)

Mensaje: Failed initializing relay log position: %s

· Error: 1381 SQLSTATE: HY000 (ER_NO_BINARY_LOGGING)

Mensaje: You are not using binary logging

· Error: 1382 SQLSTATE: HY000 (ER_RESERVED_SYNTAX)

Mensaje: The '%s' syntax is reserved for purposes internal to the MySQL server

· Error: 1383 SQLSTATE: HY000 (ER_WSAS_FAILED)

Mensaje: WSAStartup Failed

· Error: 1384 SQLSTATE: HY000 (ER_DIFF_GROUPS_PROC)

Mensaje: Can't handle procedures with different groups yet

· Error: 1385 SQLSTATE: HY000 (ER_NO_GROUP_FOR_PROC)

Mensaje: Select must have a group with this procedure

· Error: 1386 SQLSTATE: HY000 (ER_ORDER_WITH_PROC)

Mensaje: Can't use ORDER clause with this procedure

· Error: 1387 SQLSTATE: HY000 (ER_LOGGING_PROHIBIT_CHANGING_OF)

Mensaje: Binary logging and replication forbid changing the global server %s

· Error: 1388 SQLSTATE: HY000 (ER_NO_FILE_MAPPING)

Mensaje: Can't map file: %s, errno: %d

· Error: 1389 SQLSTATE: HY000 (ER_WRONG_MAGIC)

Mensaje: Wrong magic in %s

· Error: 1390 SQLSTATE: HY000 (ER_PS_MANY_PARAM)

Mensaje: Prepared statement contains too many placeholders

· Error: 1391 SQLSTATE: HY000 (ER_KEY_PART_0)

Mensaje: Key part '%s' length cannot be 0

· Error: 1392 SQLSTATE: HY000 (ER_VIEW_CHECKSUM)

Mensaje: View text checksum failed

· Error: 1393 SQLSTATE: HY000 (ER_VIEW_MULTIUPDATE)

Mensaje: Can not modify more than one base table through a join view '%s.%s'

· Error: 1394 SQLSTATE: HY000 (ER_VIEW_NO_INSERT_FIELD_LIST)

Mensaje: Can not insert into join view '%s.%s' without fields list

· Error: 1395 SQLSTATE: HY000 (ER_VIEW_DELETE_MERGE_VIEW)

Mensaje: Can not delete from join view '%s.%s'

· Error: 1396 SQLSTATE: HY000 (ER_CANNOT_USER)

Page 19: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Operation %s failed for %s

· Error: 1397 SQLSTATE: XAE04 (ER_XAER_NOTA)

Mensaje: XAER_NOTA: Unknown XID

· Error: 1398 SQLSTATE: XAE05 (ER_XAER_INVAL)

Mensaje: XAER_INVAL: Invalid arguments (or unsupported command)

· Error: 1399 SQLSTATE: XAE07 (ER_XAER_RMFAIL)

Mensaje: XAER_RMFAIL: The command cannot be executed when global transaction is in the %s state

· Error: 1400 SQLSTATE: XAE09 (ER_XAER_OUTSIDE)

Mensaje: XAER_OUTSIDE: Some work is done outside global transaction

· Error: 1401 SQLSTATE: XAE03 (ER_XAER_RMERR)

Mensaje: XAER_RMERR: Fatal error occurred in the transaction branch - check your data for consistency

· Error: 1402 SQLSTATE: XA100 (ER_XA_RBROLLBACK)

Mensaje: XA_RBROLLBACK: Transaction branch was rolled back

· Error: 1403 SQLSTATE: 42000 (ER_NONEXISTING_PROC_GRANT)

Mensaje: There is no such grant defined for user '%s' on host '%s' on routine '%s'

· Error: 1404 SQLSTATE: HY000 (ER_PROC_AUTO_GRANT_FAIL)

Mensaje: Failed to grant EXECUTE and ALTER ROUTINE privileges

· Error: 1405 SQLSTATE: HY000 (ER_PROC_AUTO_REVOKE_FAIL)

Mensaje: Failed to revoke all privileges to dropped routine

· Error: 1406 SQLSTATE: 22001 (ER_DATA_TOO_LONG)

Mensaje: Data too long for column '%s' at row %ld

· Error: 1407 SQLSTATE: 42000 (ER_SP_BAD_SQLSTATE)

Mensaje: Bad SQLSTATE: '%s'

· Error: 1408 SQLSTATE: HY000 (ER_STARTUP)

Mensaje: %s: ready for connections. Version: '%s' socket: '%s' port: %d %s

· Error: 1409 SQLSTATE: HY000 (ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR)

Mensaje: Can't load value from file with fixed size rows to variable

· Error: 1410 SQLSTATE: 42000 (ER_CANT_CREATE_USER_WITH_GRANT)

Mensaje: You are not allowed to create a user with GRANT

· Error: 1411 SQLSTATE: HY000 (ER_WRONG_VALUE_FOR_TYPE)

Mensaje: Incorrect %s value: '%s' for function %s

· Error: 1412 SQLSTATE: HY000 (ER_TABLE_DEF_CHANGED)

Mensaje: Table definition has changed, please retry transaction

· Error: 1413 SQLSTATE: 42000 (ER_SP_DUP_HANDLER)

Mensaje: Duplicate handler declared in the same block

· Error: 1414 SQLSTATE: 42000 (ER_SP_NOT_VAR_ARG)

Mensaje: OUT or INOUT argument %d for routine %s is not a variable or NEW pseudo-variable in BEFORE trigger

· Error: 1415 SQLSTATE: 0A000 (ER_SP_NO_RETSET)

Mensaje: Not allowed to return a result set from a %s

· Error: 1416 SQLSTATE: 22003 (ER_CANT_CREATE_GEOMETRY_OBJECT)

Mensaje: Cannot get geometry object from data you send to the GEOMETRY field

· Error: 1417 SQLSTATE: HY000 (ER_FAILED_ROUTINE_BREAK_BINLOG)

Mensaje: A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes

· Error: 1418 SQLSTATE: HY000 (ER_BINLOG_UNSAFE_ROUTINE)

Page 20: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled(you *might* want to use the less safe log_bin_trust_function_creators variable)

· Error: 1419 SQLSTATE: HY000 (ER_BINLOG_CREATE_ROUTINE_NEED_SUPER)

Mensaje: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safelog_bin_trust_function_creators variable)

· Error: 1420 SQLSTATE: HY000 (ER_EXEC_STMT_WITH_OPEN_CURSOR)

Mensaje: You can't execute a prepared statement which has an open cursor associated with it. Reset the statement to re-execute it.

· Error: 1421 SQLSTATE: HY000 (ER_STMT_HAS_NO_OPEN_CURSOR)

Mensaje: The statement (%lu) has no open cursor.

· Error: 1422 SQLSTATE: HY000 (ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG)

Mensaje: Explicit or implicit commit is not allowed in stored function or trigger.

· Error: 1423 SQLSTATE: HY000 (ER_NO_DEFAULT_FOR_VIEW_FIELD)

Mensaje: Field of view '%s.%s' underlying table doesn't have a default value

· Error: 1424 SQLSTATE: HY000 (ER_SP_NO_RECURSION)

Mensaje: Recursive stored functions and triggers are not allowed.

· Error: 1425 SQLSTATE: 42000 (ER_TOO_BIG_SCALE)

Mensaje: Too big scale %lu specified for column '%s'. Maximum is %d.

· Error: 1426 SQLSTATE: 42000 (ER_TOO_BIG_PRECISION)

Mensaje: Too big precision %lu specified for column '%s'. Maximum is %lu.

· Error: 1427 SQLSTATE: 42000 (ER_M_BIGGER_THAN_D)

Mensaje: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%s').

· Error: 1428 SQLSTATE: HY000 (ER_WRONG_LOCK_OF_SYSTEM_TABLE)

Mensaje: You can't combine write-locking of system '%s.%s' table with other tables

· Error: 1429 SQLSTATE: HY000 (ER_CONNECT_TO_FOREIGN_DATA_SOURCE)

Mensaje: Unable to connect to foreign data source: %s

· Error: 1430 SQLSTATE: HY000 (ER_QUERY_ON_FOREIGN_DATA_SOURCE)

Mensaje: There was a problem processing the query on the foreign data source. Data source error: %s

· Error: 1431 SQLSTATE: HY000 (ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST)

Mensaje: The foreign data source you are trying to reference does not exist. Data source error: %s

· Error: 1432 SQLSTATE: HY000 (ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE)

Mensaje: Can't create federated table. The data source connection string '%s' is not in the correct format

· Error: 1433 SQLSTATE: HY000 (ER_FOREIGN_DATA_STRING_INVALID)

Mensaje: The data source connection string '%s' is not in the correct format

· Error: 1434 SQLSTATE: HY000 (ER_CANT_CREATE_FEDERATED_TABLE)

Mensaje: Can't create federated table. Foreign data src error: %s

· Error: 1435 SQLSTATE: HY000 (ER_TRG_IN_WRONG_SCHEMA)

Mensaje: Trigger in wrong schema

· Error: 1436 SQLSTATE: HY000 (ER_STACK_OVERRUN_NEED_MORE)

Mensaje: Thread stack overrun: %ld bytes used of a %ld byte stack, and %ld bytes needed. Use 'mysqld -O thread_stack=#' to specify abigger stack.

· Error: 1437 SQLSTATE: 42000 (ER_TOO_LONG_BODY)

Mensaje: Routine body for '%s' is too long

· Error: 1438 SQLSTATE: HY000 (ER_WARN_CANT_DROP_DEFAULT_KEYCACHE)

Mensaje: Cannot drop default keycache

· Error: 1439 SQLSTATE: 42000 (ER_TOO_BIG_DISPLAYWIDTH)

Mensaje: Display width out of range for column '%s' (max = %lu)

Page 21: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 1440 SQLSTATE: XAE08 (ER_XAER_DUPID)

Mensaje: XAER_DUPID: The XID already exists

· Error: 1441 SQLSTATE: 22008 (ER_DATETIME_FUNCTION_OVERFLOW)

Mensaje: Datetime function: %s field overflow

· Error: 1442 SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG)

Mensaje: Can't update table '%s' in stored function/trigger because it is already used by statement which invoked this storedfunction/trigger.

· Error: 1443 SQLSTATE: HY000 (ER_VIEW_PREVENT_UPDATE)

Mensaje: The definition of table '%s' prevents operation %s on table '%s'.

· Error: 1444 SQLSTATE: HY000 (ER_PS_NO_RECURSION)

Mensaje: The prepared statement contains a stored routine call that refers to that same statement. It's not allowed to execute a preparedstatement in such a recursive manner

· Error: 1445 SQLSTATE: HY000 (ER_SP_CANT_SET_AUTOCOMMIT)

Mensaje: Not allowed to set autocommit from a stored function or trigger

· Error: 1446 SQLSTATE: HY000 (ER_MALFORMED_DEFINER)

Mensaje: Definer is not fully qualified

· Error: 1447 SQLSTATE: HY000 (ER_VIEW_FRM_NO_USER)

Mensaje: View '%s'.'%s' has no definer information (old table format). Current user is used as definer. Please recreate the view!

· Error: 1448 SQLSTATE: HY000 (ER_VIEW_OTHER_USER)

Mensaje: You need the SUPER privilege for creation view with '%s'@'%s' definer

· Error: 1449 SQLSTATE: HY000 (ER_NO_SUCH_USER)

Mensaje: There is no '%s'@'%s' registered

· Error: 1450 SQLSTATE: HY000 (ER_FORBID_SCHEMA_CHANGE)

Mensaje: Changing schema from '%s' to '%s' is not allowed.

· Error: 1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2)

Mensaje: Cannot delete or update a parent row: a foreign key constraint fails (%s)

· Error: 1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2)

Mensaje: Cannot add or update a child row: a foreign key constraint fails (%s)

· Error: 1453 SQLSTATE: 42000 (ER_SP_BAD_VAR_SHADOW)

Mensaje: Variable '%s' must be quoted with `...`, or renamed

· Error: 1454 SQLSTATE: HY000 (ER_TRG_NO_DEFINER)

Mensaje: No definer attribute for trigger '%s'.'%s'. The trigger will be activated under the authorization of the invoker, which may haveinsufficient privileges. Please recreate the trigger.

· Error: 1455 SQLSTATE: HY000 (ER_OLD_FILE_FORMAT)

Mensaje: '%s' has an old format, you should re-create the '%s' object(s)

· Error: 1456 SQLSTATE: HY000 (ER_SP_RECURSION_LIMIT)

Mensaje: Recursive limit %d (as set by the max_sp_recursion_depth variable) was exceeded for routine %s

· Error: 1457 SQLSTATE: HY000 (ER_SP_PROC_TABLE_CORRUPT)

Mensaje: Failed to load routine %s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)

· Error: 1458 SQLSTATE: 42000 (ER_SP_WRONG_NAME)

Mensaje: Incorrect routine name '%s'

· Error: 1459 SQLSTATE: HY000 (ER_TABLE_NEEDS_UPGRADE)

Mensaje: Table upgrade required. Please do "REPAIR TABLE `%s`" to fix it!

· Error: 1460 SQLSTATE: 42000 (ER_SP_NO_AGGREGATE)

Mensaje: AGGREGATE is not supported for stored functions

· Error: 1461 SQLSTATE: 42000 (ER_MAX_PREPARED_STMT_COUNT_REACHED)

Page 22: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Can't create more than max_prepared_stmt_count statements (current value: %lu)

· Error: 1462 SQLSTATE: HY000 (ER_VIEW_RECURSIVE)

Mensaje: `%s`.`%s` contains view recursion

· Error: 1463 SQLSTATE: 42000 (ER_NON_GROUPING_FIELD_USED)

Mensaje: non-grouping field '%s' is used in %s clause

· Error: 1464 SQLSTATE: HY000 (ER_TABLE_CANT_HANDLE_SPKEYS)

Mensaje: The used table type doesn't support SPATIAL indexes

· Error: 1465 SQLSTATE: HY000 (ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA)

Mensaje: Triggers can not be created on system tables

· Error: 1466 SQLSTATE: HY000 (ER_REMOVED_SPACES)

Mensaje: Leading spaces are removed from name '%s'

· Error: 1467 SQLSTATE: HY000 (ER_AUTOINC_READ_FAILED)

Mensaje: Failed to read auto-increment value from storage engine

· Error: 1468 SQLSTATE: HY000 (ER_USERNAME)

Mensaje: user name

· Error: 1469 SQLSTATE: HY000 (ER_HOSTNAME)

Mensaje: host name

· Error: 1470 SQLSTATE: HY000 (ER_WRONG_STRING_LENGTH)

Mensaje: String '%s' is too long for %s (should be no longer than %d)

· Error: 1471 SQLSTATE: HY000 (ER_NON_INSERTABLE_TABLE)

Mensaje: The target table %s of the %s is not insertable-into

· Error: 1472 SQLSTATE: HY000 (ER_ADMIN_WRONG_MRG_TABLE)

Mensaje: Table '%s' is differently defined or of non-MyISAM type or doesn't exist

· Error: 1473 SQLSTATE: HY000 (ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT)

Mensaje: Too high level of nesting for select

· Error: 1474 SQLSTATE: HY000 (ER_NAME_BECOMES_EMPTY)

Mensaje: Name '%s' has become ''

· Error: 1475 SQLSTATE: HY000 (ER_AMBIGUOUS_FIELD_TERM)

Mensaje: First character of the FIELDS TERMINATED string is ambiguous; please use non-optional and non-empty FIELDS ENCLOSEDBY

· Error: 1476 SQLSTATE: HY000 (ER_LOAD_DATA_INVALID_COLUMN)

Mensaje: Invalid column reference (%s) in LOAD DATA

· Error: 1477 SQLSTATE: HY000 (ER_LOG_PURGE_NO_FILE)

Mensaje: Being purged log %s was not found

· Error: 1478 SQLSTATE: XA106 (ER_XA_RBTIMEOUT)

Mensaje: XA_RBTIMEOUT: Transaction branch was rolled back: took too long

· Error: 1479 SQLSTATE: XA102 (ER_XA_RBDEADLOCK)

Mensaje: XA_RBDEADLOCK: Transaction branch was rolled back: deadlock was detected

La información de error de cliente proviene de los siguientes ficheros:

· Los valores de Error y los símbolos en paréntesis se corresponden a las definiciones en el fichero fuente MySQL include/errmsg.h .

· Los valores de Mensaje se corresponden con los mensajes de error que se listan en el fichero libmysql/errmsg.c . %d y %srepresentan números y cadenas de caracteres, respectivamente, que se substituyen en los mensajes cuando se muestran.

Como las actualizaciones son frecuentes, es posible que estos ficheros contengan información de error adicional que no está listada aquí.

· Error: 2000 (CR_UNKNOWN_ERROR)

Mensaje: Unknown MySQL error

· Error: 2001 (CR_SOCKET_CREATE_ERROR)

Page 23: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Can't create UNIX socket (%d)

· Error: 2002 (CR_CONNECTION_ERROR)

Mensaje: Can't connect to local MySQL server through socket '%s' (%d)

· Error: 2003 (CR_CONN_HOST_ERROR)

Mensaje: Can't connect to MySQL server on '%s' (%d)

· Error: 2004 (CR_IPSOCK_ERROR)

Mensaje: Can't create TCP/IP socket (%d)

· Error: 2005 (CR_UNKNOWN_HOST)

Mensaje: Unknown MySQL server host '%s' (%d)

· Error: 2006 (CR_SERVER_GONE_ERROR)

Mensaje: MySQL server has gone away

· Error: 2007 (CR_VERSION_ERROR)

Mensaje: Protocol mismatch; server version = %d, client version = %d

· Error: 2008 (CR_OUT_OF_MEMORY)

Mensaje: MySQL client ran out of memory

· Error: 2009 (CR_WRONG_HOST_INFO)

Mensaje: Wrong host info

· Error: 2010 (CR_LOCALHOST_CONNECTION)

Mensaje: Localhost via UNIX socket

· Error: 2011 (CR_TCP_CONNECTION)

Mensaje: %s via TCP/IP

· Error: 2012 (CR_SERVER_HANDSHAKE_ERR)

Mensaje: Error in server handshake

· Error: 2013 (CR_SERVER_LOST)

Mensaje: Lost connection to MySQL server during query

· Error: 2014 (CR_COMMANDS_OUT_OF_SYNC)

Mensaje: Commands out of sync; you can't run this command now

· Error: 2015 (CR_NAMEDPIPE_CONNECTION)

Mensaje: Named pipe: %s

· Error: 2016 (CR_NAMEDPIPEWAIT_ERROR)

Mensaje: Can't wait for named pipe to host: %s pipe: %s (%lu)

· Error: 2017 (CR_NAMEDPIPEOPEN_ERROR)

Mensaje: Can't open named pipe to host: %s pipe: %s (%lu)

· Error: 2018 (CR_NAMEDPIPESETSTATE_ERROR)

Mensaje: Can't set state of named pipe to host: %s pipe: %s (%lu)

· Error: 2019 (CR_CANT_READ_CHARSET)

Mensaje: Can't initialize character set %s (path: %s)

· Error: 2020 (CR_NET_PACKET_TOO_LARGE)

Mensaje: Got packet bigger than 'max_allowed_packet' bytes

· Error: 2021 (CR_EMBEDDED_CONNECTION)

Mensaje: Embedded server

· Error: 2022 (CR_PROBE_SLAVE_STATUS)

Mensaje: Error on SHOW SLAVE STATUS:

· Error: 2023 (CR_PROBE_SLAVE_HOSTS)

Mensaje: Error on SHOW SLAVE HOSTS:

Page 24: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Error: 2024 (CR_PROBE_SLAVE_CONNECT)

Mensaje: Error connecting to slave:

· Error: 2025 (CR_PROBE_MASTER_CONNECT)

Mensaje: Error connecting to master:

· Error: 2026 (CR_SSL_CONNECTION_ERROR)

Mensaje: SSL connection error

· Error: 2027 (CR_MALFORMED_PACKET)

Mensaje: Malformed packet

· Error: 2028 (CR_WRONG_LICENSE)

Mensaje: This client library is licensed only for use with MySQL servers having '%s' license

· Error: 2029 (CR_NULL_POINTER)

Mensaje: Invalid use of null pointer

· Error: 2030 (CR_NO_PREPARE_STMT)

Mensaje: Statement not prepared

· Error: 2031 (CR_PARAMS_NOT_BOUND)

Mensaje: No data supplied for parameters in prepared statement

· Error: 2032 (CR_DATA_TRUNCATED)

Mensaje: Data truncated

· Error: 2033 (CR_NO_PARAMETERS_EXISTS)

Mensaje: No parameters exist in the statement

· Error: 2034 (CR_INVALID_PARAMETER_NO)

Mensaje: Invalid parameter number

· Error: 2035 (CR_INVALID_BUFFER_USE)

Mensaje: Can't send long data for non-string/non-binary data types (parameter: %d)

· Error: 2036 (CR_UNSUPPORTED_PARAM_TYPE)

Mensaje: Using unsupported buffer type: %d (parameter: %d)

· Error: 2037 (CR_SHARED_MEMORY_CONNECTION)

Mensaje: Shared memory: %s

· Error: 2038 (CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR)

Mensaje: Can't open shared memory; client could not create request event (%lu)

· Error: 2039 (CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR)

Mensaje: Can't open shared memory; no answer event received from server (%lu)

· Error: 2040 (CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR)

Mensaje: Can't open shared memory; server could not allocate file mapping (%lu)

· Error: 2041 (CR_SHARED_MEMORY_CONNECT_MAP_ERROR)

Mensaje: Can't open shared memory; server could not get pointer to file mapping (%lu)

· Error: 2042 (CR_SHARED_MEMORY_FILE_MAP_ERROR)

Mensaje: Can't open shared memory; client could not allocate file mapping (%lu)

· Error: 2043 (CR_SHARED_MEMORY_MAP_ERROR)

Mensaje: Can't open shared memory; client could not get pointer to file mapping (%lu)

· Error: 2044 (CR_SHARED_MEMORY_EVENT_ERROR)

Mensaje: Can't open shared memory; client could not create %s event (%lu)

· Error: 2045 (CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR)

Mensaje: Can't open shared memory; no answer from server (%lu)

· Error: 2046 (CR_SHARED_MEMORY_CONNECT_SET_ERROR)

Page 25: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Mensaje: Can't open shared memory; cannot send request event to server (%lu)

· Error: 2047 (CR_CONN_UNKNOW_PROTOCOL)

Mensaje: Wrong or unknown protocol

· Error: 2048 (CR_INVALID_CONN_HANDLE)

Mensaje: Invalid connection handle

· Error: 2049 (CR_SECURE_AUTH)

Mensaje: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)

· Error: 2050 (CR_FETCH_CANCELED)

Mensaje: Row retrieval was canceled by mysql_stmt_close() call

· Error: 2051 (CR_NO_DATA)

Mensaje: Attempt to read column without prior row fetch

· Error: 2052 (CR_NO_STMT_METADATA)

Mensaje: Prepared statement contains no metadata

· Error: 2053 (CR_NO_RESULT_SET)

Mensaje: Attempt to read a row while there is no result set associated with the statement

· Error: 2054 (CR_NOT_IMPLEMENTED)

Mensaje: This feature is not implemented yet

· Error: 2055 (CR_SERVER_LOST_EXTENDED)

Mensaje: Lost connection to MySQL server at '%s', system error: %d

Page 26: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

27. EXTENDER MYSQL

27.1. El interior de MySQL

Este capítulo describe muchas cosas que necesita saber cuando trabaje con el código de MySQL. Si planea contribuir al desarrollo de MySQL,quiere tener acceso al límite de código de versiones, o sólo quiere estar al día del desarrollo, siga las instrucciones en Sección 2.8.3, “Instalar desde el árbol de código fuente de desarrollo”. Si está interesado en conceptos internos de MySQL, debe suscribirse a la lista de correo internals .Esta lista tiene poco tráfico. Para más detalles sobre cómo suscribirse, consulte Sección 1.6.1.1, “Las listas de correo de MySQL” . Todos losdesarrolladores en MySQL AB están en la lista internals y ayudamos a otra gente trabajando en el código de MySQL. Siéntase libre de usar estalista para preguntar cosas sobre el código y para enviar parches con los que quiera contribuir al proyecto MySQL!

27.1.1. Los subprocesos (threads) MySQL

MySQL server crea los siguientes flujos:

· El flujo de conexión TCP/IP trata todas las peticiones de conexión y crea un nuevo flujo dedicado para tratar el proceso de autenticacióny de consulta SQL para cada conexión.

· En Windows NT hay un flujo para tratar los named pipes que hace el mismo trabajo que el flujo de conexiones TCP/IP en peticiones deconexión por named pipe.

· El flujo de señales trata todas las señales. Este flujo también trata normalmente alarmas y llamadas process_alarm() para forzartiempos máximos en las conexiones que llevan en espera demasiado tiempo.

· Si se compila mysqld con -DUSE_ALARM_THREAD,se crea un flujo dedicado que trata alarmas. Sólo se usa en algunos sistemasdonde hay problemas con sigwait() o si quiere usar el código thr_alarm() en su aplicación sin un flujo dedicado a tratar señales.

· Si usa la opción --flush_time=# , se crea un flujo dedicado para volcar todas las tablas en un intervalo dado.

· Cada conexión tiene su propio flujo.

· Cada tabla diferente en que se usa INSERT DELAYED tiene su propio flujo.

· Si usa --master-host, se arranca un flujo de replicación esclavo para leer y aplicar actualizaciones del maestro.

mysqladmin processlist sólo muestra la conexión, INSERT DELAYED, y flujos de replicación.

27.1.2. El paquete de pruebas MySQL Test

El sistema de testeo incluído en distribuciones fuente Unix y distribuciones binarias hace que sea posible para los usuarios y desarrolladoresrealizar tests de regresión en código MySQL. Estos tests pueden ejecutarse en Unix o en Windows (usando el entorno Cygwin) si el servidor se hacompilado bajo Cygwin. No pueden ejecutarse en un entorno Windows nativo.

El conjunto actual de casos de uso no testea todo en MySQL, pero debería atrapar la mayoría de bugs obvios en el código de proceso SQL, temasde bibliotecas del SO, y es bastante útil para testear replicación. Nuestra meta eventual es que el test cubra el 100% del código. Los contribuidoresde nuestra suite de test son bienvenidos. Puede querer contribuir con tests que examinen la funcionalidad crítica del sistema, ya que esto aseguraque todas las futuras versiones de MySQL funcionen bien con sus aplicaciones.

27.1.2.1. Ejecutar el paquete de pruebas MySQL Test

El sistema de test consiste en un intérprete de idioma de test (mysqltest), un shell script para ejecutar todos los tests(mysql-test-run), los casos deusos de test actuales escritos en un lenguaje especial de test, y sus resultados esperados. Para ejecutar la test suite en su sistema tras construirloescriba make test o mysql-test/mysql-test-run de la raíz del código fuente. Si ha instalado una distribución binaria, cd a la raíz de la instalación(ej. /usr/local/mysql), y ejecute scripts/mysql-test-run. Todos los tests deberían tener éxito. Si no fuera así, debería intentar encontrar el porqué yreportar el problema si es un bug de MySQL. Consulte Sección 27.1.2.3, “Reportar bugs de la suite de test de MySQL” .

Desde MySQL 4.1 , si tiene una copia de mysqld ejecutándose en la máquina donde quiere ejecutar el test suite no tiene que pararlo, mientras nouse los puertos 9306 y 9307. Si uno de esos puertos está ocupado, debe editar mysql-test-run y cambiar los valores de los puertos maestro y/oesclavo a uno que esté disponible.

Antes de MySQL 4.1, mysql-test-run no intenta ejecutar su propio servidor por defecto pero intenta usar su servidor que esté en ejecución. Paracambiar este comportamiento y hacer que mysql-test-run arranque su propio servidor, ejecútelo con la opción --local .

Puede ejecutar un caso de test individual con mysql-test/mysql-test-run test_name.

Si falla un test, debe probar ejecutar mysql-test-run con la opción --force para chequear si algún otro test falla.

27.1.2.2. Extender el paquete de pruebas MySQL Test

Puede usar el lenguaje mysqltest para crear sus propios casos de test. Desafortunadamente, todavía no hay una documentación completa para elmismo. Sin embargo, puede ojear nuestros casos de uso y usarlos como ejemplo. Los siguientes puntos pueden ayudarle a empezar:

· Los tests se encuentran en mysql-test/t/*.test

· Un caso de test consiste en comandos terminados por ; y es similar a la entrada del cliente de línea de comandos mysql . Un comandopor defecto es una consulta que se envía a MySQL server, a no ser que se reconozca como comando interno (p.e. sleep).

· Todas las consultas que producen resultados--por ejemplo, SELECT, SHOW, EXPLAIN, etc., debe precederse con @/path/to/result/file.El fichero debe contener los resultados esperados. Una forma fácil de generar el fichero de resultados es ejecutar mysqltest -r <t/test-case-name.test del directorio mysql-test, y editar los ficheros resultantes, si es necesario, para ajustarlos a la salida esperada. En esecaso, sea muy cuidadoso de no añadir o borrar caracteres invisibles -- asegúrese de cambiar sólo el texto y/o borrar líneas. Si tiene que

Page 27: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

insertar una línea, aségurese que los campos estén separados por un tabulador, y que hay un tabulador al final. Si quiere puede usar od-c para asegurarse que su editor de texto no ha desbaratado nada durante la edición. Esperamos que nunca tenga que editar la salida demysqltest -r ya que sólo tiene que hacerlo al encontrar un bug.

· Para ser consistente con nuestra inicialización, debe poner sus ficheros resultantes en el directorio mysql-test/r y llamarlostest_name.result. Si el test produce más de un resultado, debe usar test_name.a.result, test_name.b.result, etc.

· Si un comando retorna un error, debe especificarlo con --error error-number en la línea anterior al comando. El número de error puedeser una lista de números de error posibles separados por ','.

· Si está escribiendo un caso de test de replicación, debe poner en la primera línea del fichero de test, source include/master-slave.inc;.Para cambiar entre maestro y esclavo, use connection master; y connection slave;. Si necesita hacer algo en una conexiónalternativa, puede hacer connection master1; para el maestro, y connection slave1; para el esclavo.

· Si necesita hacer algo en un bucle, puede usar algo como esto:

· let $1=1000;

· while ($1)

· {

· # do your queries here

· dec $1;

· }

· Para dormir entre consultas, use el comando sleep. Soporta fracciones de segundo, así que puede usar sleep 1.3;, por ejemplo, paradormir 1.3 segundos.

· Para ejecutar el esclavo con opciones adicionales para sus casos de test, póngalos en el formato de línea de comandos en mysql-test/t/test_name-slave.opt. Para el maestro, póngalas en mysql-test/t/test_name-master.opt.

· Si tiene una pregunta sobre la suite de test, o tiene un caso de test al que contribuir, envíe un email a la lista de correo MySQLinternals . Consulte Sección 1.6.1.1, “Las listas de correo de MySQL” . Como esta lista no acepta adjuntos, debe subir por ftp todos losficheros relevantes a: ftp://ftp.mysql.com/pub/mysql/upload/

27.1.2.3. Reportar bugs de la suite de test de MySQL

Si su versión de MySQL no pasa el suite de test debe hacer lo siguiente:

· No envíe un reporte de bug antes que haya encontrado todo lo posible sobre qué ha ido mal! Cuando lo haga, por favor use el scriptmysqlbug para que podamos obtener información sobre el sistema y la versión MySQL. Consulte Sección 1.6.1.3, “Cómo informar de bugs y problemas”.

· Asegúrese de incluir la salida de mysql-test-run, así como los contenidos de todos los ficheros .reject en el directorio mysql-test/r .

· Si falla un test en la suite, chequee si el test también falla al ejecutarlo en solitario:

· cd mysql-test

· mysql-test-run --local test-name

Si esto falla, debe configurar MySQL con --with-debug y ejecutar mysql-test-run con la opción --debug . Si también falla envíe el ficherode traza var/tmp/master.trace a ftp://ftp.mysql.com/pub/mysql/upload/ para que podamos examinarlo. Por favor recuerde de incluir unadescripción completa de su sistema, la versión del binario mysqld y cómo lo compiló.

· También intente ejecutar mysql-test-run con la opción --force para ver si hay algún otro test que falla.

· Si ha compilado MySQL usted mismo, chequee nuestro manual para ver cómo compilar MySQL en su plataforma, o preferiblemente,usar uno de los binarios que hemos compilado en http://dev.mysql.com/downloads/. Todos nuestros binarios estándard deben pasar lasuite de tests!

· Si obtiene un error como Result length mismatch o Result content mismatch significa que la salida del test no coincide exactamentecon la salida esperada. Este puede ser un bug en MySQL o que su versión de mysqld produce resultados ligeramente distintos bajoalgunas circunstancias.

Los resultados de tests fallidos se ponen en un fichero con el mismo nombre base que el fichero de resultados con la extensión .reject .Si su caso de test falla, debe hacer un diff entre los dos ficheros. Si no puede ver en qué se distinguen, exemine ambos con od -c ycompruebe los tamaños.

· Si un test falla completamente, debe chequear los ficheros de logs en el directorio mysql-test/var/log para ayudas sobre qué ha fallado.

· Si ha compilado MySQL con depuración puede intentar depurarlo ejecutando mysql-test-run con las opciones --gdb y/o --debug .Consulte Sección D.1.2, “Crear ficheros de traza” .

Si no ha compilado MySQL para depuración debería hacerlo. Especifique la opción --with-debug en configure. Consulte Sección 2.8, “Instalación de MySQL usando una distribución de código fuente”.

27.2. Añadir nuevas funciones a MySQL

Hay dos formas de añadir nuevas funciones a MySQL:

Page 28: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· Puede añadir funciones con la interfaz de funciones definidas de usuario (UDF) (N.del T. Acrónimo para User Defined Functions). Lasfunciones definidas por el usuario se ocmpilan como ficheros objeto y se añaden y borran del servidor dinámicamente usando loscomandos CREATE FUNCTION y DROP FUNCTION . Consulte Sección 27.2.2, “Sintaxis de CREATE FUNCTION/DROP FUNCTION ” .

· Puede añadir funciones como funciones nativas MySQL. Se compilan en el servidor mysqld y están disponibles permanentemente.

Cada método tiene ventajas y desventajas:

· Si escribe funciones definidas por el usuario, debe instalar ficheros objeto además del servidor mismo. Si compilar su función en elservidor, no necesita hacerlo.

· Puede añadir UDFs a distribuciones binarias MySQL . Las funciones nativas requieren modificar una distribución fuente.

· Si actualiza su distribución MySQL , puede continuar usando las UDFs previamente instaladas, a no ser que actualice a una versión en laque la interfaz UDF cambie. (Un cambio incompatible ocurrió en MySQL 4.1.1 para funciones agregadas. Una función llamada xxx_clear() debe definirse en lugar de xxx_reset().) Para funciones nativas, debe repetir sus modificaciones cada vez que actualice.

Use el método que use para añadir nuevas fucnciones, pueden invocarse en comandos SQL como funciones nativas tales como ABS() oSOUNDEX().

Otra forma de añadir funciones es creando funciones almacenadas. Se escriben con comandos SQL en lugar de compilando código objeto. Lasintaxis para escribr funciones almacenadas se describe en Stored Procedures.

La siguiente sección describe características de la interfaz UDF, proporciona intrucciones para escribir UDFs, y discute sobre precauciones deseguridad que toma MySQSL para prevenir un mal uso de UDF.

Para código fuente de ejemplo que ilustra cómo escribir UDFs, mire el fichero sql/udf_example.cc que se proporciona en las distribuciones fuentesde MySQL.

27.2.1. Características de la interfaz para funciones definidas por el usuario

La interfaz de MySQL para funciones definidas por el usuario proporciona las siguientes funcionalidades y capacidades:

· Las funciones pueden retornar cadenas de caracteres, enteros o valores reales.

· Puede definir funciones simples que operen en con un único registro a la vez, o agregar funciones que operen con grupos de registros.

· Se proporciona información a las funciones que permite chequear el tipo y número de argumentos que se les pasa.

· Le puede decir a MySQL que coercione argumentos de un tipo dado antes de pasarlos a la función.

· Puede indicar que una funcion retorne NULL o que ha ocurrido un error.

27.2.2. Sintaxis de CREATE FUNCTION/DROP FUNCTION

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}

SONAME shared_library_name

DROP FUNCTION function_name

Una funciones definidas por el usuario (UDF) es un modo de extender MySQL con una nueva función que funciona como una función nativa deMySQL tal como ABS() o CONCAT().

function_name es el nombre que debe usarse en comandos SQL para invocar la función. La cláusula RETURNS indica el tipo del valor de retornode la función. shared_library_name es el nombre base de la fichero del objeto compartido que contiene el código que implementa la función. Elfichero debe localizarse en un directorio en el que busque el lincador dinámico del sistema.

Para crear una función , debe tener el privilegio INSERT para la base de datos mysql . Para borrar una función, debe tener el privilegio DELETEpara la base de datos mysql . Esto es así porque CREATE FUNCTION añade un registro a la tabla de sistema mysql.func que registra losnombres de función, tipo, y nombre de la biblioteca compartida, y DROP FUNCTION borra el registro de la función de dicha tabla. Si no tiene estatabla, debe ejecutar el script mysql_fix_privilege_tables para crearla. Consulte Sección 2.10.2, “Aumentar la versión de las tablas de privilegios” .

Una función activa es una que se ha cargado con CREATE FUNCTION y no se ha eliminado con DROP FUNCTION. Todas las funciones activasse recargan cada vez que el servidor arranca, a no ser que arranque mysqld con la opción --skip-grant-tables . En este caso, la inicialización deUDF no se hace y no están disponibles.

Para instrucciones sobre escribir funciones definidas por el usuario consulte Sección 27.2.3, “Añadir una nueva función definida por el usuario” .Para que funcione el mecanismo de UDF, las funciones deben escribirse en C o C++, su sistema operativo debe soportar carga dinámica y debehaber compilado mysqld dinámicamente (no estáticamente).

AGGREGATE es una nueva opción para MySQL 3.23. Una función AGGREGATE funciona exactamente como una función agregada (resumen) deMySQL tal como SUM o COUNT(). Para que funcione AGGREGATE , su tabla mysql.func debe contener una columna type . Si su tablamysql.func no tiene esta columna, debe ejecutar el script mysql_fix_privilege_tables para crearla.

27.2.3. Añadir una nueva función definida por el usuario

Para que funciones el mecanismo UDF, las funciones deben escribirse en C o C++ y su sistema operativo debe soportar carga dinámica. Ladistribución fuente de MySQL incluye un fichero sql/udf_example.cc que define 5 nuevas funciones. Consulte este fichero para ver cómo funcionanlas convenciones de llamadas de UDF.

Para poder usar UDFs, necesita lincar mysqld dinámicamente. No configure MySQL usando --with-mysqld-ldflags=-all-static. Si quiere usar unaUDF que necesite acceder a símbolos desde mysqld (por ejemplo la función metaphone en sql/udf_example.cc que usa default_charset_info),debe lincar el programa con -rdynamic (consulte man dlopen). Si planea usar UDFs, la rula es configurar MySQL con --with-mysqld-ldflags=-rdynamic a no ser que tenga una muy buena razón para no hacerlo.

Page 29: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Si usa una distribución precompilada de MySQL, use MySQL-Max, que contiene un servidor lincado dinámicamente que soporta carga dinámica.

Para cada función que quiera usar en comandos SQL, debe definir las funciones correspondientes en C (o C++). En la siguiente discusión, elnombre “xxx” se usa como nombre de función de ejemplo. Para distinguir entre el uso de SQL y C/C++ , XXX() (mayúsculas) indicata una llamadade función SQL, xxx() (minúsculas) indica una llamada de función C/C++ .

Las funciones C/C++ que escribe para implementar la interfaz para XXX() son:

· xxx() (requerido)

La función principal. Es donde el resultado de la función se computa. La correspondencia entre los tipos de datos de la función SQL y eltipo de retorno de la función C/C++ se muestra aquí:

SQLType

C/C++ Type

STRING char *

INTEGER

long long

REAL double

· xxx_init() (opcional)

La función de inicialización para xxx(). Puede usarse para:

o Chequea el número de argumentos para XXX().

o Chequea que los argumentos son de un tipo requerido o, alternativamente, le dice a MySQL que coercione argumentos a lostipos que quiera cuando se llama a la función principal.

o Reserva cualquier memoria requerida por la función principal.

o Especifica la longitud máxima del resultado.

o Especifica (para funciones REAL ) el máximo número de decimales.

o Especifica si el resultado puede ser NULL.

§ xxx_deinit() (opcional)

La función de deinicialización para xxx(). Debe liberar cualquier memoria reservada por la función de inicialización.

Cuando un comando SQL invoca XXX(), MySQL llama a la función de inicialización xxx_init() para que realice cualquier inicialización necesaria,tales como chequeo de argumentos o reserva de memoria. Si xxx_init() retorna un error, el comando SQL se aborta con un mensaje de error y nose llama ni a la función principal ni a la de deinicialización. En caso contrario, se llama a la función principal xxx() una vez para cada registro. Trasprocesar todos los registros, se llama a la función de deinicialización xxx_deinit() para que pueda realizar cualquier limpieza requerida.

Para funciones agregadas que funcionan como SUM(), debe proporcionar las siguientes funciones:

· xxx_reset() (necesaria antes de 4.1.1)

Resetea el valor agregado actual e inserta el argumento como valor agregado inicial para un nuevo grupo.

· xxx_clear() (requerido a partir de 4.1.1)

Resetea el valor agregado actual pero no inserta el argumento como valor agregado inicial para un nuevo grupo.

· xxx_add() (requerido)

Añade el argumento al valor agregado actual.

MySQL trata UDFs agregados como sigue:

1. Llama a xxx_init() para permitir a la función agregada reservar la memoria necesaria para ordenar resultados.

2. Ordena la table según la expresión GROUP BY.

3. Llama a xxx_clear() para el primer registro en cada grupo.

4. Llama a xxx_add() para cada nuevo registro que permita al mismo grupo.

5. Llama a xxx() para obtener el resultado del agregado cuando el grupo cambia o cuando el último registro se ha procesado.

6. Repite 3-5 hasta que se procesan todos los registros

7. Llama a xxx_deinit() para permitir al UDF liberar la memoria reservada.

Todas las funciones deben ser flujos seguros. Esto incluye no sólo la función principal,también las funciones de inicialización o deinicialización, ylas funciones adicionales requeridas por las funciones agregadas. Una consecuencia de esta restricción es que no se le permite reservar ningunavariable global o estática que cambien! Si necesita memoria, debe reservarla en xxx_init() y liberarla en xxx_deinit().

27.2.3.1. Secuencias de llamada UDF para funciones simples

Page 30: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Esta sección describe las distintas funciones que necesita definir cuando crea un UDF simple. Sección 27.2.3, “Añadir una nueva función definida por el usuario” describe el orden en que MySQL llama a estas funciones.

La función principal xxx() debe declararse como se muestra en esta sección. Tenga en cuenta que el tipo de retorno y los parámetros difieren,dependiendo de si declara la función SQL XXX() para retornar STRING, INTEGER, o REAL en el comando CREATE FUNCTION :

Para funciones STRING :

char *xxx(UDF_INIT *initid, UDF_ARGS *args,

char *result, unsigned long *length,

char *is_null, char *error);

Para funciones INTEGER :

long long xxx(UDF_INIT *initid, UDF_ARGS *args,

char *is_null, char *error);

Para funciones REAL :

double xxx(UDF_INIT *initid, UDF_ARGS *args,

char *is_null, char *error);

Las funciones de inicialización y deinicialización se declaran así:

my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message);

void xxx_deinit(UDF_INIT *initid);

El parámetro initid se pasa a las tres funciones. Apunta a la estructura UDF_INIT que se usa para comunicar información entre funciones. Losmienbros de la estructura UDF_INIT se muestran a continuación. La función de inicialización debe rellenar cualquier miembro que quiera cambiar.(Para usar el valor por defecto de un miembro no lo cambie.)

· my_bool maybe_null

xxx_init() debe asignar a maybe_null 1 si xxx() puede retornar NULL. El valor por defecto es 1 si alguno de los argumentos se declaranmaybe_null.

· unsigned int decimals

El número de decimales. El valor por defecto es el número máximo de decimales en los argumentos pasados a la función principal. (Porejemplo, si a la función se pasa 1.34, 1.345, y 1.3, el valor por defecto es 3, ya que 1.345 tiene 3 decimales.

· unsigned int max_length

Longitud máxima del resultado. El valor por defecto max_length difiere en función del tipo de resultado de la función. Para funciones decadenas de caracteres, el valor por defecto es el argumento más largo. Para funciones enteras, el valor por defecto es de 21 dígitos.Para funciones reales, el valor por defecto es 13 mas el número de decimales indicados por initid->decimals. (Para funcionesnuméricas, la longitud incluye cualquier signo o carácter de punto decimal.)

Si quiere retornar un valor blob, puede asignar a max_length de 65KB a 16MB. Esta memoria no se reserva, pero el valor se usa paradecidir qué tipo de columna usar si hay una necesidad de almacenar los datos temporalmente.

· char *ptr

Puntero que la función puede usar para su propio propósito. Por ejemplo, las funciones pueden usar initid->ptr para comunicar memoriareservada entre ellos. xxx_init() debe reservar la memoria y asignarla al puntero:

initid->ptr = allocated_memory;

En xxx() y xxx_deinit(), refiérase a initid->ptr para usar o liberar la memoria.

27.2.3.2. Secuencias de llamada UDF para funciones agregadas

Esta sección describe las distintas funciones que necesita definir cuando crea un UDF agregado. Sección 27.2.3, “Añadir una nueva función definida por el usuario” describe el orden en que MySQL llama a estas funciones.

· xxx_reset()

Esta función se llama cuando MySQL encuentra el primer registro en un nuevo grupo. Debe resetear cualquier variable resumen interna yusar el argumento dado UDF_ARGS como primer valor en su resumen interno del grupo. Declare xxx_reset() como se muestra:

char *xxx_reset(UDF_INIT *initid, UDF_ARGS *args,

char *is_null, char *error);

xxx_reset() se necesita sólo antes de MySQL 4.1.1. NO se necesita usar desde MySQL 4.1.1, cuando la interfaz UDF cambió para usarxxx_clear() en su lugar. Sin embargo, puede definir xxx_reset() y xxx_clear() si quiere que su UDF funcione antes y después delcambio de interfaz. (Si no incluye ambas funciones, la función xxx_reset() en muchos casos puede implementarse internamentellamando xxx_clear() para resetear todas las variables, y luego llamar xxx_add() para añadir el argumento UDF_ARGS como primervalor del grupo.)

· xxx_clear()

Page 31: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Esta función se llama cuando MySQL necesita resetear los resultados resumen. Se llama al principio para cada nuevo grupo pero sólopuede llamarse para resetear los valores para una consulta donde no hubieran registros que coincidan con la búsqueda. Declarexxx_clear() como sigue:

char *xxx_clear(UDF_INIT *initid, char *is_null, char *error);

is_null se asigna para que apunte a CHAR(0) antes de llamar a xxx_clear().

Si algo falla, puede almacenar un valor en la variable a la que apunta el argumento error. error apunta a una variable de un byte, no a unbúfer de cadenas de caracteres.

xxx_clear() se requiere sólo a partir de MySQL 4.1.1. Antes de MySQL 4.1.1, use xxx_reset() en su lugar.

· xxx_add()

Esta función se llama para todos los registros que pertenezcan al mismo grupo, excepto para el primer registor. Debe ussarlo para añadirel valor en el argumento UDF_ARGS a su variable de resumen interna.

char *xxx_add(UDF_INIT *initid, UDF_ARGS *args,

char *is_null, char *error);

La función xxx() para un UDF agregado debe declararse de la misma forma que UDF no agregados. Consulte Sección 27.2.3.1, “Secuencias de llamada UDF para funciones simples”.

Para un UDF agregado, MySQL llama a la función xxx() una vez que todos los registros en el grupo han sido procesados. Normalmente no debeacceder el argumento UDF_ARGS aquí sino devolver un valor basado en sus variables de resumen internas.

El tratamiento de valores retornados en xxx() debe hacerse del mismo modo que para UDF no agregados. Consulte Sección 27.2.3.4, “Valores de retorno y tratamiento de errores”.

Las funciones xxx_reset() y xxx_add() tratan sus argumentos UDF_ARGS del mismo modo que las funciones para UDFs no agregados. ConsulteSección 27.2.3.3, “Proceso de argumentos” .

Los argumentos punteros de is_null y error son los mismos para todas las llamadas a xxx_reset(), xxx_clear(), xxx_add() y xxx(). Puede usaresto para recordar que obtuvo un error o si la función xxx() debería retornar NULL. No debe almacenar una cadena de caracteres en *error! errorapunta a una variable de un byte, no a un búfer de cadenas de caracteres.

*is_null se resetea para cada grupo (antes de llamar xxx_clear()). *error nunca se resetea.

Si *is_null o *error se asignan cuando xxx() retorna, MySQL retorna NULL como resultado para la función de grupo.

27.2.3.3. Proceso de argumentos

El parámetro args apunta a una estructura UDF_ARGS que tiene los miembros listados a continuación:

· unsigned int arg_count

Número de argumentos. Chequee este valor en la función de inicialización si necesita que su función sea llamada con un númeroparticular de argumentos. Por ejemplo:

if (args->arg_count != 2)

{

strcpy(message,"XXX() requires two arguments");

return 1;

}

· enum Item_result *arg_type

Puntero a una matriz conteniendo los tipos para cada argumento. Los tipos posibles son STRING_RESULT, INT_RESULT, yREAL_RESULT.

Par asegurar que los argumentos sean de un tipo dado y retorne un error si no lo son, chequee la matriz arg_type en la función deinicialización. Por ejemplo:

if (args->arg_type[0] != STRING_RESULT ||

args->arg_type[1] != INT_RESULT)

{

strcpy(message,"XXX() requires a string and an integer");

return 1;

}

Como alternativa a requerir que los argumentos de la función sean de un tipo particular, puede usar la función de inicialización paraasignar los elementos arg_type con los tipos que quiera. Esto hace que MySQL fuerce a los argumentos a los tipos para cada llamadade xxx(). Por ejemplo, para especificar que los primeros dos argumentos se fuercen a una cadena de caracteres de enteros,respectivamente, haga lo siguiente en xxx_init():

args->arg_type[0] = STRING_RESULT;

args->arg_type[1] = INT_RESULT;

· char **args

Page 32: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

args->args comunica información a la función de inicialización acerca de la naturaleza general de los argumentos pasados a la función.Para un argumento constante i, args->args[i] apunta al valor del argumento. (Consulte a continuación instrucciones sobre cómo accederal valor apropiadamente.) Para argumentos no constantes, args->args[i] es 0. Un argumento constante es una expresión que usa sóloconstantes, como 3 o 4*7-2 o SIN(3.14). Un argumento no constante es una expresión que se refiere a valores que pueden cambiar deregistro a registro, tales como nombres de columna o funciones que se llaman con argumentos no constantes.

Para cada invocación de la función principal, args->args contiene los argumentos que se pasan para el registro que está procesando.

Las funciones pueden referirse a un argumento i como se muestra:

o Un argumento de tipo STRING_RESULT se da como puntero a una cadena de caracteres más una longitud, para permitirtratar datos binarios o datos arbitráriamente largos. Los contenidos de la cadena de caracteres están disponibles como args->args[i] y la longitud de la cadena es args->lengths[i]. No debe asumir que las cadenas de caracteres están terminadas pornull.

o Para un argumento de tipo INT_RESULT, debe convertir args->args[i] a un valor long long :

o long long int_val;

o int_val = *((long long*) args->args[i]);

o Para un argumento de tipo REAL_RESULT, debe convertir args->args[i] a un valor double :

o double real_val;

o real_val = *((double*) args->args[i]);

§ unsigned long *lengths

Para la función de inicialización, la matriz lengths indica la longitud máxima de cadena de caracteres para cada argumento. No debecambiar este valor. Para cada invocación de la función principal lengths contiene las longitudes reales de cualquier argumento decadenas de caracteres que se pasa al registro en proceso. Para argumentos de tipos INT_RESULT o REAL_RESULT, lengths contienela longitud máxima del argumento (como para la función de inicialización).

27.2.3.4. Valores de retorno y tratamiento de errores

La función de inicialización debe retornar 0 si no hay errores y 1 en cualquier otro caso. Si ocurre un error, xxx_init() debe almacenar un mensajede error terminado en null en el parámetro message . El mensaje se retorna al cliente. El búffer de mensajes es de longitudMYSQL_ERRMSG_SIZE, pero debe tratar que el mensaje ea inferior a 80 caracteres para que coincida con la anchura de una pantalla de terminalestándar.

El valor retornado por una función principal xxx() es el valor de la función, para funciones long long y double . Una función de cadenas decaracteres debe retornar un puntero al resultado y asignar *result y *length con los contenidos y longitud del valor de retorno. Por ejemplo:

memcpy(result, "result string", 13);

*length = 13;

El búffer result que se pasa a la función xxx() tiene longitud de 255 bytes. Si su resultado coincide con esto, no tiene que preocuparse acerca dereservar memoria para los resultados.

Si su función de cadenas de caracteres necesita retornar una cadena de caracteres mayor a 255 bytes, debe reservar el espacio para ello conmalloc() en su función xxx_init() o su función xxx() y liberarla en su función xxx_deinit() . Puede almacenar la memoria reservada en la entradaptr en la estructura UDF_INIT para reusar para llamadas futuras xxx() . Consulte Sección 27.2.3.1, “Secuencias de llamada UDF para funciones simples”.

Para indicar un valor de retorno de NULL en la función principal, asigne a *is_null 1:

*is_null = 1;

Para indicar un retorno de error en la función principal, inicialice *error con 1:

*error = 1;

Si xxx() asigna a *error 1 para cualquier registro, el valor de la función es NULL para el registro actual y para cualquier subsecuente registroprocesado por el comando en que se invoca XXX() . (xxx() no se llama ni por registros subsecuentes.) Nota: Antes de MySQL 3.22.10, debeasignar tanto *error como *is_null:

*error = 1;

*is_null = 1;

27.2.3.5. Compilar e instalar funciones definidas por el usuario

Los ficheros implementando UDFs deben compilarse e instalarse en el equipo donde corre el servidor. Este proceso se describe a continuaciónpara el fichero UDF de ejemplo sql/udf_example.cc que se incluye en la distribución fuente de MySQL.

Las instrucciones siguientes son para Unix. Las instructiones para Windows se dan posteriormente en esta sección.

El fichero udf_example.cc contiene las siguientes funciones:

· metaphon() retorna una cadena de caracteres metaphon del argumento de cadena de caracteres. Esto es algo como una cadena decaracteres soundex, pero más ajustado al inglés.

· myfunc_double() retorna la suma de los valores ASCII de los caracteres en los argumentos, divididos por la suma de la longitud de losargumentos.

· myfunc_int() retorna la suma de la longitud de los argumentos.

Page 33: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

· sequence([const int]) retorna una secuencia empezando por el número dado o 1 si no se da ningún número.

· lookup() retorna la IP para un nombre de equipo.

· reverse_lookup() retorna el nombre de equipo para una IP. La función puede llamarse con un único argumento de cadena de caracteresde la forma 'xxx.xxx.xxx.xxx' o con cuatro números.

Un fichero cargable dinámicamente debe compilarse como fichero objeto compartible, usando un comando como:

shell> gcc -shared -o udf_example.so udf_example.cc

Si usa gcc, debe ser capaz de crear udf_example.so con un comando más simple:

shell> make udf_example.so

Puede determinar fácilmente las opciones de compilación adecuadas para su sistema ejecutando este comando en el directorio sql del árbol fuentede MySQL:

shell> make udf_example.o

Debe ejecutar un comando de compilación similar al que muestra make , excepto que debe quitar la opción -c cerca del final de la línea y añadir -oudf_example.so al final de la línea. (En algunos sistemas, puede necesitar dejar -c en el comando.)

Tras compilar un objeto compartido conteniendo UDFs, debe instalarlo y comunicarlo a MySQL. Compilar un objeto compartido de udf_example.ccproduce un fichero llamado algo como udf_example.so (el nombre exacto puede variar de plataforma a plataforma). Copie este fichero en undirectorio como /usr/lib en el que busque el lincador dinámico del sistema (en tiempo de ejecución), o añada el directorio en el que está el objetocompartido en el fichero de configuración del lincador (por ejemplo, /etc/ld.so.conf).

El nombre del lincador depende del sistema (por ejemplo, ld-elf.so.1 en FreeBSD, ld.so en Linux, o dyld en Mac OS X). Consulte su documentacióndel sistema para información acerca del nombre del lincador y cómo configurarlo.

En muchos sistemas, puede cambiar las variables de entorno LD_LIBRARY o LD_LIBRARY_PATH para que apunten al directorio donde tiene losficheros de su UDF. La página de manual dlopen explica qué variables debe usar en su sistema. Debe inicializarla en los scripts de arranquemysql.server o mysqld_safe y reiniciar mysqld.

En algunos sistemas, el programa ldconfig que configura el lincador dinámico no reconoce un objeto compartido a no ser que su nombre comiencecon lib. En ese caso debe renombar el fichero como udf_example.so a libudf_example.so.

En Windows, puede compilar funciones definidas por el usuario usando el siguiente procedimiento:

1. Necesita obtener el repositorio fuente BitKeeper para MySQL 4.0 o superior. Consulte Sección 2.8.3, “Instalar desde el árbol de código fuente de desarrollo”.

2. En el repositorio fuente, busque el directorio VC++Files/examples/udf_example . Hay ficheros llamados udf_example.def,udf_example.dsp, y udf_example.dsw .

3. En el repositorio fuente, busque en el directorio sql . Copie udf_example.cc de este directorio al directorioVC++Files/examples/udf_example y renombre el fichero a udf_example.cpp.

4. Abra el fichero udf_example.dsw con Visual Studio VC++ y úselo para compilar los UDFs como un proyecto normal.

Cuando el objeto compartido se ha instalado, notifique a mysqld con las nuevas funciones con estos comandos:

mysql> CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.so';

mysql> CREATE FUNCTION myfunc_double RETURNS REAL SONAME 'udf_example.so';

mysql> CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME 'udf_example.so';

mysql> CREATE FUNCTION lookup RETURNS STRING SONAME 'udf_example.so';

mysql> CREATE FUNCTION reverse_lookup

-> RETURNS STRING SONAME 'udf_example.so';

mysql> CREATE AGGREGATE FUNCTION avgcost

-> RETURNS REAL SONAME 'udf_example.so';

Las funciones pueden borrarse con DROP FUNCTION:

mysql> DROP FUNCTION metaphon;

mysql> DROP FUNCTION myfunc_double;

mysql> DROP FUNCTION myfunc_int;

mysql> DROP FUNCTION lookup;

mysql> DROP FUNCTION reverse_lookup;

mysql> DROP FUNCTION avgcost;

Los comandos CREATE FUNCTION y DROP FUNCTION actualizan la tabla de sistema func en la base de datos mysql . El nombre de función,tipo y nombre de biblioteca compartida se salvan en la tabla. Debe tener los privilegios INSERT y DELETE para la base de datos mysql para creary borrar funciones.

No debe usar CREATE FUNCTION para añadir una función que se ha creado préviamente. Si necesita reinstalar una función, debe borrarla conDROP FUNCTION y reinstalarla con CREATE FUNCTION. Puede necesitar hacer esto, por ejemplo si recompila una nueva versión de su función,de forma que mysqld tenga la nueva versión. De otro modo, el servidor continua usando la versión antigua.

Page 34: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

Una función activa es una que se ha cargado con CREATE FUNCTION y no se ha borrado con DROP FUNCTION. Todas las funciones activas serecargan cada vez que el servidor arranca, a no ser que arranque mysqld con la opción --skip-grant-tables . En ese caso, la inicialización de UDFsno se hace y no están disponibles.

27.2.3.6. Precauciones de seguridad en funciones definidas por usuarios

MySQL toma las siguientes medidas para evitar uso inadecuado de funciones definidas por el usuario.

Debe tener el privilegio INSERT para poder usar CREATE FUNCTION y el privilegio DELETE para poder usar DROP FUNCTION. Esto esnecesario ya que estos comandos añaden y borran registros de la tabla mysql.func .

UDFs debe tener como mínimo un símbolo definido además del símbolo xxx que corresponde a la función principal xxx() . Estos símbolosauxiliares se corresponden con las funciones xxx_init(), xxx_deinit(), xxx_reset(), xxx_clear(), y xxx_add() . Desde MySQL 4.0.24, 4.1.10a, y5.0.3, mysqld soporta una opción --allow-suspicious-udfs que controla si UDFs que tienen un solo símbolo xxx pueden cargarse. Por defecto, laopción está desactivada, para evitar intentos de cargar funciones de ficheros de objetos compartidos otros aparte de los que contienen UDFslegítimos. Si tiene UDFs antiguos que contienen sólo el símbolo xxx y no pueden recompilarse para incluir un símbolo auxiliar, puede ser necesarioespecificar la opción --allow-suspicious-udfs . De otro modo, debe evitar activar esta capacidad.

Los ficheros objeto UDF no pueden guardarse en un directorio arbitrario. Deben estar localizado en un directorio de sistema en el que busque ellincador dinámico. Para forzar esta restricción y evitar intentos de especificar rutas fuera de los directorios buscados por el lincador dinámico,MySQL chequea el fichero de objeto compartido especificado en comandos CREATE FUNCTION para delimitadores de rutas. Desde MySQL4.0.24, 4.1.10a, y 5.0.3, MySQL también chequea los delimitadores de rutas en nombres de ficheros almacenados en la tabla mysql.func cuandocarga funciones. Esto evita intentos de especificar rutas ilegítimas manipuladas en la tabla mysql.func . Para información acerca de UDFs ylincador en tiempo de ejecución, consulte Sección 27.2.3.5, “Compilar e instalar funciones definidas por el usuario” .

27.2.4. Añadir una nueva función nativa

El procedimiento para añadir una nueva función nativa se describe aquí. Tenga en cuenta que no puede añadir funciones nativas a una distribuciónbinaria ya que el procedimiento implica modificar código fuente MySQL. Debe compilar MySQL de una distribución fuente. También tenga encuenta que si migra a otra versión de MySQL (por ejemplo, cuando una nueva versión aparece), necesita repetir el procedimiento con la nuevaversión.

Para añadir una nueva función MySQL nativa, siga estos pasos:

1. Añada una línea en lex.h que defina el nombre de función en la matriz sql_functions[].

2. Si el prototipo de función es simple (sólo tiene cero, uno, dos o tres argumentos), debe especificar en lex.h SYM(FUNC_ARGN) (dondeN es el número de argumentos) como el segundo argumento en la matriz sql_functions[] y añadir una nueva función que cree un objetofunción en item_create.cc. Consulte "ABS" y create_funcs_abs() para un ejemplo.

Si la función prototipo es complicada (por ejemplo, tiene un número variable de argumentos), debe añadir dos líneas en sql_yacc.yy. Unaindica el símbolo de preprocesador que yacc debe definir (debe añadirse al principio del fichero). Luego defina los parámetros de funcióny añada un “item” con estos parámetros a la regla de parseo simple_expr . Para un ejemplo, consulte todas las ocurrencias de ATAN ensql_yacc.yy para ver cómo se hace.

3. En item_func.h, declare una clase heredando de Item_num_func o Item_str_func, en función de si su función retorna un número o unacadena de caracteres.

4. En item_func.cc, añada una de las siguientes declaraciones, dependiendo de si está definiendo una función numérica o de cadena decaracteres:

5. double Item_func_newname::val()

6. longlong Item_func_newname::val_int()

7. String *Item_func_newname::Str(String *str)

Si hereda su objeto de cualquiera de los objetos estándar (como Item_num_func), probablemente sólo tiene que definier una de estasfunciones y dejar que el objeto padre se ocupe de las otras funciones. Por ejemplo, la clase Item_str_func define una función val() queejecuta atof() en el valor retornado por ::str().

8. Debería probablemente definir la siguiente función objeto:

9. void Item_func_newname::fix_length_and_dec()

Esta función debe calcular al menos max_length basándose en los argumentos dados. max_length es el máximo número de caracteresque la función puede retornar. Esta función debería también asignar maybe_null = 0 si la función principal no puede retornar un valorNULL . La función puede chequear si algunos de los argumentos de la función puede retornar NULL chequeando la variable maybe_nullde los argumentos. Puede consultar Item_func_mod::fix_length_and_dec para un ejemplo típico de cómo hacer esto.

Todas las funciones deben ser flujos seguros. En otras palabras, no usar ninguna variable global o estática en las funciones sin protegerlas consemáforos

Si quiere retornar NULL, desde ::val(), ::val_int() or ::str() debe asignar a null_value 1 y retornar 0.

Para funciones objeto ::str() , hay algunas consideraciones adicionales a tener en cuenta:

· El argumento String *str proporciona un búffer de cadenas de caracteres que puede usarse para guardar el resultado. (Para másinformación acerca del tipo String , consulte el fichero sql_string.h .)

· La función ::str() debe retornar la cadena de caracteres que tiene el resultado o (char*) 0 si el resultado es NULL.

· Todas las funciones de cadenas de caracteres tratan de evitar cualquier reserva de memoria a no ser que sea absolutamente necesario!

27.3. Añadir nuevos procedimientos a MySQL

Page 35: 26. MANEJO DE ERRORES EN MYSQL - …tecnocomputo.co/almacen/Root/Informatica Pdf/Informatica_Anonimo... · 26. MANEJO DE ERRORES EN MYSQL Este capítulo lista los errores que pueden

En MySQL, puede definir un procedimiento en C++ que pueda acceder y modificar los datos en una consulta antes de enviarla al cliente. Lamodificación puede hacerse registro a registro o a nivel GROUP BY .

Hemos creado un procedimiento de ejemplo en MySQL 3.23 para mostrar cómo se hace.

Adicionalmente, recomendamos que consulte mylua. Con esto puede usar el lenguaje LUA para cargar procedimientos en tiempo de ejecución enmysqld.

27.3.1. Procedimiento Analyse

analyse([max_elements,[max_memory]])

Este procedimiento se define en sql/sql_analyse.cc. Esto examina el resultado de su consulta y retorna un análisis del resultado:

· max_elements (por defecto 256) es el máximo número de valores distintos que analyse puede tratar por columna. Esto lo usa analysepara chequear si el tipo óptimo de columna debe ser de tipo ENUM.

· max_memory (por defecto 8192) es la cantidad máxima de memoria que analyse puede reservar por columna mientras trata deencontrar todos los valores distintos.

SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])

27.3.2. Escribir un procedimiento

De momento, la única documentación para esto son las fuentes.

Puede encontrar toda la información acerca de procedimientos examinando los siguientes ficheros:

· sql/sql_analyse.cc

· sql/procedure.h

· sql/procedure.cc

· sql/sql_select.cc