PrincipalEmpresaSoporteContacto
950 62 70 23
Dominios Hosting Servidores Dedicados Housing Backup Remoto Multimedia Promoción Web
13.5.2.1. Sintaxis de ANALYZE TABLE ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... Este comando analiza y almacena la distribución de clave para una tabla. Durante el análisis, la tabla se bloquea con un bloqueo de lectura. En MySQL 5.0, funciona en tablas MyISAM, BDB, y InnoDB . Para tablas MyISAM , este comando es equivalente a usar myisamchk -a. MySQL usa la distribución de claves almacenada para decidir el orden en que las tablas deben hacer los joins cuando realiza uno en algo que no sea una constante. El comando retorna una tabla con las siguientes columnas: Columna Valor Tabla Nombre de tabla Op Siempre analyze Msg_type Es status, error, info, o warning Msg_text Mensaje Puede chequear la distribución de claves almacenada con el comando SHOW INDEX . Consulte Sección 13.5.4.11, ?Sintaxis de SHOW INDEX?. Si la tabla no ha cambiado desde el último comando ANALYZE TABLE , la tabla no se vuelve a analizar. En MySQL 5.0, los comandos ANALYZE TABLE se escriben en el log binario a no ser que la palabra clave NO_WRITE_TO_BINLOG opcional (o su alias LOCAL) se use. 13.5.2.2. Sintaxis de BACKUP TABLE BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory' Nota: Este comando está obsoleto. Estamos trabajano en un mejor sustituto para este que proporcionará capacidades de copia de seguridad en línea. De momento, el script mysqlhotcopy puede usarse. BACKUP TABLE copia al directorio de base de datos el mínimo número de ficheros de tablas necesarias para restaurar la tabla, tras volcar cualquier cambios almacenados en el buffer a disco. El comando funciona sólo para tablas MyISAM . Copia los ficheros de definición .frm y de datos .MYD . El fichero índice .MYI puede reconstruirse desde estos otros. El directorio debe especificarse con la ruta entera. Antes de usar este comando consulte Sección 5.8.1, ?Copias de seguridad de bases de datos?. Durante la copia de seguridad, se realiza un bloqueo de lectura para cada tabla, uno cada vez, mientras se hace la copia. Si quier hacer una copia de seguridad de varias tablas como una muestra (evitando que ninguna de ellas se cambie durante la operación de la copia de seguridad), debe realizar un comando LOCK TABLES para obtener un bloqueo de lectura para cada tabla en el grupo. El comando retorna una tabla con las siguientes columnas: Columna Valor Tabla Nombre de tabla Op Siempre backup Msg_type Es status, error, info, o warning Msg_text Mensaje 13.5.2.3. Sintaxis de CHECK TABLE CHECK TABLE tbl_name [, tbl_name] ... [option] ... option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED} Chequea una tabla o tablas para errores. CHECK TABLE funciona para tablas MyISAM y InnoDB . Para tablas MyISAM , la estadística de clave se actualiza. Desde MySQL 5.0.2, CHECK TABLE puede comprobar las vistas en busca de problemas tales como tablas que se referencian en la definición de la vista que ya no existe. El comando CHECK TABLE retorna una tabla con las siguientes columnas: Columna Valor Tabla Nombre de tabla Op Siempre check Msg_type Es status, error, info, o warning Msg_text Mensaje Tenga en cuenta que el comando puede producir varios registros para información de cada tabla chequeada. El último registro tiene un valor Msg_type de status y Msg_text normalmente debe ser OK. Si no obtiene OK, o Table is already up to date debe realizar una reparación de la tabla. Consulte Sección 5.8.3, ?Mantenimiento de tablas y recuperación de un fallo catastrófico (crash)?. Table is already up to date significa que el motor de almacenamiento para la tabla indicada indica que no hay necesidad de chequear la tabla. Las distintas opciones de chequeo que pueden darse se muestran en la siguiente tabla. Estas opciones se aplican sólo para tablas MyISAM y se ignoran en tablas InnoDB y vistas. Tipo Significado QUICK No escanea los registros para chequear enlaces incorrectos. FAST Sólo chequea tablas que no se han cerrado correctamente. CHANGED Sólo las tablas chequeadas que se han cambiado desde el úlitmo chequeo o no se han cerrado correctamente. MEDIUM Escanea registros para verificar que los enlaces borrados están bien. También calcula el checksum de la clave para los registros y lo verifica con el checksum calculado para las claves. EXTENDED Realiza una búsqueda completa para todas las claves para cada registro. Se asegura que la tabla es consistente 100%, pero tarda mucho tiempo! Si ninguna de las opciones QUICK, MEDIUM, o EXTENDED se especifica, el tipo de chequeo por defecto para tablas de formato dinámico MyISAM es MEDIUM. Esto es lo mismo que ejecutar myisamchk --medium-check tbl_name en la tabla. El tipo de chequeo por defecto también es MEDIUM para tablas MyISAM de formato estático, a no ser que se especifique CHANGED o FAST. En tal caso, por defecto es QUICK. El escaneo de registro se evita para CHANGED y FAST porque los registros están corruptos muy raramente. Puede combinar opciones de chequeo, como en el siguiente ejemplo, que realiza un chequeo rápido de la tabla para ver si se cerró correctamente: CHECK TABLE test_table FAST QUICK; Nota: En algunos casos, CHECK TABLE cambia la tabla. Esto ocurre si la tabla se marca como ?corrupted? o ?not closed properly? pero CHECK TABLE no encuentra ningún problema en la tabla. En este caso, CHECK TABLE marca la tabla como correcta. Si una tabla está corrupta, es más probable que el problema esté en el índice y no en la parte de datos. Todos los tipos de chequeo chequean los índices profundamente y deberían encontrar la mayoría de errores. Si quiere chequear una tabla que asume como correcta, no debe usar opciones de chequeo o la opción QUICK. Ésta debe usarse cuando tiene prisa y puede permitirse el pequeño riesgo que QUICK no encuentre un error en el fichero de datos. (En la mayoría de casos, MySQL debería encontrar, bajo uso normal, cualquier error en el fichero de datos. Si esto ocurre, la tabla se marca como ?corrupted? y no puede usarse hasta que se repare.) FAST y CHANGED están pensados para usar desde un script (por ejemplo, para ejecutarse desde cron) si quiere chequear sus tablas de vez en cuando. En la mayoría de casos, FAST se prefiere en lugar de CHANGED. (El único caso en que no es el método preferido es cuando sospecha que ha encontrado un bug en el código MyISAM .) EXTENDED debe usarse sólo después de ejecutar un chequeo normal pero todavía obtiene errores extraños de la tabla cuando MySQL intenta actualizar un registro o encuentra un registro mediante la clave. (Esto es muy improbable si un chequeo normal ha tenido éxito.) Algunos problemas reportados por CHECK TABLE no pueden corregirse automáticamente: Found row where the auto_increment column has the value 0. Esto significa que tiene un registro en la tabla donde la columna AUTO_INCREMENT contiene un valor de índice de 0. (Es posible crear un registro donde la columna AUTO_INCREMENT es 0 poneindo la columna explícitamente a 0 con un comando UPDATE .) Esto no es un error por si mismo, pero puede causar problemas si decide volcar la tabla y restaurarla o realizar un ALTER TABLE en la tabla. En este caso, la columna AUTO_INCREMENT cambia los valores según las reglas de las columnas AUTO_INCREMENT , que pueden causar problemas tales como errores de clave duplicada. Para evitar las advertencias, símplemente ejecute un comando UPDATE para poner en la columna un valor distinto a 0. 13.5.2.4. Sintaxis de CHECKSUM TABLE CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ] Reporta un checksum de tabla. Si QUICK se especifica, el checksum de la tabla se reporta si está disponible, o NULL en otro caso. Esto es muy rápido. Un checksum en vivo está permitido especificando la opción de tabla CHECKSUM=1 , actualmente sólo soportado por tablas MyISAM . Consulte Sección 13.1.5, ?Sintaxis de CREATE TABLE?. En modo EXTENDED la tabla completa se lee registro a registro y se calcula el checksum. Esto puede ser muy lento para tablas grandes. Por defecto, si no se especifica ni QUICK ni EXTENDED , MySQL retorna un checksum en vivo si el motor de tabla lo soporta y escanea la tabla de otro modo. CHECKSUM TABLE retorna NULL para tablas no existentes. Desde MySQL 5.0.3, se genera una advertencia para esta condición. 13.5.2.5. Sintaxis de OPTIMIZE TABLE OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... OPTIMIZE TABLE debe usarse si ha borrado una gran parte de la tabla o si ha hecho varios cambios en una tabla con registros de longitud variable (tablas que tienen columnas VARCHAR, BLOB, o TEXT ). Los registros borrados se mantienen en una lista enlazada y operaciones INSERT posteriores reúsan posiciones de antiguos registros. Puede usar OPTIMIZE TABLE para reclamar el usuario no usado y para defragmentar el fichero de datos. En la mayoría de inicializaciones, no necesita ejecutar OPTIMIZE TABLE para nada. Incluso si hace muchas actualizaciones a registros de longitud variables, no es probable que necesite hacerlo más de una vez a la semana o mes y sólo en ciertas tablas. Actualmente, OPTIMIZE TABLE funciona sólo en tablas MyISAM, BDB y InnoDB . Para tablas MyISAM , OPTIMIZE TABLE funciona como sigue: Si la tabla ha borrado o dividido registros, repare la tabla. Si las páginas índice no están ordenadas, ordénelas. Si las estadísticas no están actualizadas (y la reparación no puede hacerse ordenando el índice), actualícelas. Para tablas BDB , OPTIMIZE TABLE es mapea como ANALYZE TABLE. Para tablas InnoDB , se mapea con ALTER TABLE, que reconstruye la tabla. Reconstruye las estadísticas actualizadas de índice y libera espacio no usado en el índice clusterizado. Consulte Sección 13.5.2.1, ?Sintaxis de ANALYZE TABLE?. Puede hacer que OPTIMIZE TABLE funcione con otros tipos de tabla arrancando mysqld con la opción --skip-new o --safe-mode ; en este caso OPTIMIZE TABLE se mapea con ALTER TABLE. Tenga en ceunta que MySQL bloquea la tabla mientras se ejecuta OPTIMIZE TABLE . En MySQL 5.0, los comandos OPTIMIZE TABLE se escriben en el log binario a no ser que la palabra NO_WRITE_TO_BINLOG opcional(o su alias LOCAL) se use. Esto se hace para que los comandos OPTIMIZE TABLE se usen en MySQL server actuando como maestro de replicación se replique por defecto en el esclavo de replicación. 13.5.2.6. Sintaxis de REPAIR TABLE REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REPAIR TABLE repara una tabla posiblemente corrupta. Por defecto, tiene el mismo efecto que myisamchk --recover tbl_name. REPAIR TABLE funciona sólo en tablas MyISAM. Normalmente nunca debe ejecutar este comando. Sin embargo, si hay un desastre, REPAIR TABLE puede recuperar todos los datos de una tabla MyISAM . Si sus tablas se corrompen a menudo, debe intentar encontrar la razón de lo que lo causa, para eliminar la necesidad de usar REPAIR TABLE. Consulte Sección A.4.2, ?Qué hacer si MySQL sigue fallando (crashing)?. Consulte Sección 14.1.4, ?Problemas en tablas MyISAM?. El comando retorna una tabla con las siguientes columnas: Columna Valor Tabla Nombre de tabla Op Siempre es repair Msg_type Es status, error, info, o warning Msg_text Mensaje El comando REPAIR TABLE puede producir muchos registros de información para cada tabla reparada. El último registro tiene un valor Msg_type de status y Msg_test normalmente debe ser OK. Si no obtiene OK, debe intentar reparar la tabla con myisamchk --safe-recover, ya que REPAIR TABLE no implementa todas las opciones de myisamchk. Plaenamos hacerlo más flexible en el futuro. Si se da QUICK , REPAIR TABLE intenta reparar sólo el árbol índice. Este tipo de reparación es como lo que hace myisamchk --recover --quick. Si usa EXTENDED, MySQL crea el índice registro a registro en lugar de crear un índice a la vez ordenando. Este tipo de reparación es como el hecho por myisamchk --safe-recover. También hay un modo USE_FRM disponible en MySQL 5.0 para REPAIR TABLE. Use esto si el fichero índice .MYI no existe o su cabecera está corrupta. En este modo, MySQL recrea el fichero .MYI usando información desde el fichero .frm . Este tipo de reparación no puede hacerse con myisamchk. Nota: Use este modo sólo si no puede usar modos REPAIR normalmente. La cabecera .MYI contiene información importante de metadatos (en particular, los valores actuales AUTO_INCREMENT y Delete link) que se pierden en REPAIR ... USE_FRM. No use USE_FRM si la tabla está comprimida, ya que esta información se almacena en el fichero .MYI . En MySQL 5.0, los comandos REPAIR TABLE se escriben en el log binario a no ser que la palabra opcional NO_WRITE_TO_BINLOG (o su alias LOCAL) se use. Atención: Si el servidor muere durante una operación REPAIR TABLE, es esencial tras restaurarla que inmediatamente ejecute otro comando REPAIR TABLE para la tabla antes de realizar cualquier otra operación en ella. (Siempre es una buena idea empezar haciendo una copia de seguridad.) En el peor caso, puede tener un nuevo fichero índice limpio sin información acerca del fichero de datos, y luego la siguiente operación que realice puede sobreescribir el fichero de datos. Este es un escenario improbable pero posible. 13.5.2.7. Sintaxis de RESTORE TABLE RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory' Restaura la tabla o tablas de una copia de seguridad que se hizo con BACKUP TABLE. Las tablas existentes no se sobreescriben; si trata restaurar una tabla existente, obtiene un error. Pero como BACKUP TABLE, RESTORE TABLE actualmente funciona sólo para tablas MyISAM . El directorio debe especificarse como una ruta completa. La copia de seguridad para cada tabla consiste en su fichero de formato .frm y fichero de datos .MYD . La operación de restauración restaura aquellos ficheros, luego los usa para reconstruir el fichero índice .MYI. La restauración tarda más tiempo que la copia de seguridad debido a la necesidad de reescribir los índices. Mientras más índices tenga la tabla, más tarda. El comando retorna una tabla con las siguientes columnas: Columna Valor Tabla Nombre de tabla Op Siempre restore Msg_type Es status, error, info, o warning Msg_text Mensaje 13.5.3. Sintaxis de SET SET variable_assignment [, variable_assignment] ... variable_assignment: user_var_name = expr | [GLOBAL | SESSION] system_var_name = expr | @@[global. | session.]system_var_name = expr SET inicializa distintos tipos de variables que afectan la operación del servidor o de su cliente. Puede usarse para asignar valores a las variables de usuario o de sistema. El comando SET PASSWORD para asignar contraseñas de cuenta se describen en Sección 13.5.1.5, ?Sintaxis de SET PASSWORD?. La mayoría del sistema puede cambiarse en tiempo de ejecución. Las variables de sistema que pueden describirse dinámicamente se describen en Sección 5.3.3.1, ?Variables de sistema dinámicas?. Nota: Las versiones antiguas de MySQL empleaban SET OPTION para este comando, pero su uso está obsoleto en favor de SET. El siguiente ejemplo muestra las distintas sintaxis que puede usar para cambiar las variables. Una variable de usuario se escribe como @var_name y puede cambiarse como sigue: SET @var_name = expr; Más información sobre variables de usuario se da en Sección 9.3, ?Variables de usuario?. Se puede referir a las variables de sistema en comandos SET como var_name. El nombre puede ir precedido opcionalmente por GLOBAL o @@global. para indicar explícitamente que la variable es global, o por SESSION, @@session., o @@ para indicar que es una variable de sesión. LOCAL y @@local. son sinónimos para SESSION y @@session.. Si no hay modificador presente, SET asigna un valor a la variable de sesión. La sintaxis @@var_name para variables de sistema se soporta para hacer la sintaxis de MySQL compatible con otros sistemas de base de datos. Si cambia varias variables de sistema en el mismo comando, la última opción GLOBAL o SESSION usada se usa para variables que no tienen modo especificado. SET sort_buffer_size=10000; SET @@local.sort_buffer_size=10000; SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000; Si cambia una variable de sistema usando SESSION (por defecto), el valor queda en efecto hasta que la sesión actual finaliza o hasta que cambia la variable con un valor distinto. Si cambia la variable de sistema usando GLOBAL, que requiere el permiso SUPER , el valor se recuerda y se usa para nuevas conexiones hasta que el servidor se reinicia. Si quiere hacer un cambio de variable permanente, debe ponerlo en un fichero de opciones. Consulte Sección 4.3.2, ?Usar ficheros de opciones?. Para evitar uso incorrecto, MySQL produce un error si usa SET GLOBAL con una variable que sólo puede ser usada con SET SESSION o si no especifica GLOBAL (o @@) cuando cambie una variable global. Si quiere cambiar una variable SESSION al valor GLOBAL o un valor GLOBAL al valor de compilación de MySQL por defecto, puede hacerlo con DEFAULT. Por ejemplo, los siguientes dos comandos son idénticos en cambiar los valores de sesión o max_join_size al valor global: SET max_join_size=DEFAULT; SET @@session.max_join_size=@@global.max_join_size; Puede obtener una lista de la mayoría de variables de sistema con SHOW VARIABLES. (Consulte Sección 13.5.4.21, ?Sintaxis de SHOW VARIABLES?.) Para obtener un nombre de variable específico, use una cláusula LIKE commo se muestra: SHOW VARIABLES LIKE 'max_join_size'; SHOW GLOBAL VARIABLES LIKE 'max_join_size'; Para obtener una lista de variables cuyos nombres coinciden con un patrón, use el comodín '%': SHOW VARIABLES LIKE 'have%'; SHOW GLOBAL VARIABLES LIKE 'have%'; El comodín puede usarse en cualquier posición dentro del patrón para coincidir. Puede obtener el valor de un valor específico usando la sintaxis @@[global.|local.]var_name con SELECT: SELECT @@max_join_size, @@global.max_join_size; Cuando recibe una variable con SELECT @@var_name (esto es,no especifica global., session., o local.), MySQL retorna el valor SESSION si existe y el valor GLOBAL en otro caso. La siguiente lista describe variables que tienen sintaxis no estándar o que no se describe en la lista de variables de sistema que se encuentra en Sección 5.3.3, ?Variables de sistema del servidor?. Aunque estas variables no se muestran con SHOW VARIABLES, puede obtener sus valores con SELECT (con la excepción de CHARACTER SET y SET NAMES). Por ejemplo: mysql> SELECT @@AUTOCOMMIT; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ AUTOCOMMIT = {0 | 1} Pone el modo autocommit . Con valor 1, todos los cambios de una tabla toman efecto inmediatamente. Si se pone a 0, debe usar COMMIT para aceptar una transacción o ROLLBACK para cancelarla. Si cambia el modo AUTOCOMMIT de 0 a 1, MySQL realiza un COMMIT automático de cualquier transacción abierta . Otra forma de comenzar una transacción es usar un comando START TRANSACTION o BEGIN. Consulte Sección 13.4.1, ?Sintaxis de START TRANSACTION, COMMIT y ROLLBACK?. BIG_TABLES = {0 | 1} Si se pone a 1, todas las tablas temporales se almacenan en disco en lugar que en memoria. Esto es un poco lento, pero el error The table tbl_name is full no ocurre para operaciones SELECT que requieran una tabla temporal grande. El valor por defecto para una nueva conexión es 0 (use tablas temporales en memoria). Normalmente, nunca debería necesitar usar esta variable, ya que MySQL 5.0 convierte automáticamente tablas en memoria a tablas en disco como se requiere. (Nota: Esta variable se llamaba préviamente SQL_BIG_TABLES.) CHARACTER SET {charset_name | DEFAULT} Esto mapea todas las cadenas desde y hacia el cliente con el mapeo dado. Puede añadir nuevos mapeos editando sql/convert.cc en la distribución fuente MySQL. En MySQL 5.0, SET CHARACTER SET cambia tres variables de sistema character_set_client y character_set_results se actualizan con el conjunto de carácteres dado, y character_set_connection al valor de character_set_database. El mapeo por defecto puede restaurarse usando el valor DEFAULT. Tenga en cuenta que la sintaxis para SET CHARACTER SET difiere de la de la mayoría de otras opciones. FOREIGN_KEY_CHECKS = {0 | 1} Con valor de 1 (por defecto), las claves foráneas para tablas InnoDB se chequean. Si se pone a 0, se ignoran. Deshabilitar el chequeo de clave foránea puede ser útil para recargar tablas InnoDB en un orden distinto que el requerido por sus relaciones padre/hijo, Consulte Sección 15.6.4, ?Restricciones (constraints) FOREIGN KEY?. IDENTITY = value La variable es un sinónimo para la variable LAST_INSERT_ID . Existe por compatibilidad con otras bases de datos. Puede leer su valor con SELECT @@IDENTITY, y cambiarlo mediante SET IDENTITY. INSERT_ID = value Cambia el valor a ser usado por los comandos INSERT o ALTER TABLE al insertar un valor AUTO_INCREMENT . Esto se usa principalmente con el lob binario. LAST_INSERT_ID = value Cambia el valor a ser retornado de LAST_INSERT_ID(). Esto se almacena en el log binario cuando usa LAST_INSERT_ID() en un comando que actualice una tabla. Cambiar esta variable no actualiza el valor retornado por la función de la mysql_insert_id() API de C. NAMES {'charset_name' | DEFAULT} SET NAMES cambia tres variables de sesión de sistema character_set_client, character_set_connection, y character_set_results al conjunto de carácteres dado. Cambiar character_set_connection a charset_name también cambia collation_connection a la colación por defecto para charset_name. El mapeo por defecto puede restaurarse usando un valor de DEFAULT. Tenga en cuenta que la sintaxis para SET NAMES difiere de la usada para la mayoría de otras opciones. SQL_NOTES = {0 | 1} Con el valor 1 (por defecto), advertencias del nivel Note se registran. Con valor 0, las advertencias Note se suprimen. mysqldump incluye la salida para cambiar esta variable a 0 así que recargar el fichero volcado no produce advertencias para eventos que no afectan a la integridad de la operación de recarga. SQL_NOTES se añadió en MySQL 5.0.3. SQL_AUTO_IS_NULL = {0 | 1} Con valor 1 (por defecto), puede encontrar el último registro insertado para una tabla que contiene una columna AUTO_INCREMENT usando el siguiente constructor: WHERE auto_increment_column IS NULL Este comportamiento lo usan algunos programas ODBC, como Access. SQL_BIG_SELECTS = {0 | 1} Con valor 0, MySQL aborta los comandos SELECT que probablemente tardarán mucho tiempo (esto es, comandos para los que el optimizador estima que el número de registros examinados excede el valor de max_join_size). Esto es útil cuando un comando WHERE no aconsejable se ejecuta. El valor por defecto para una nueva conexión es 1, que permite todos los comandos SELECT . Si cambia la variable de sistema max_join_size a un valor distinto a DEFAULT, SQL_BIG_SELECTS se pone a 0. SQL_BUFFER_RESULT = {0 | 1} SQL_BUFFER_RESULT fuerza los resultados de los comandos SELECT a poner en tablas temporales. Esto ayuda a MySQL a liberar los bloqueos de tabla rápidamente y pueden ser beneficioso en caso que tarde un largo tiempo para enviar resultados al cliente. SQL_LOG_BIN = {0 | 1} Con valor 0, no se realiza logueo en el log binario para el cliente. El cliente debe tener el permiso SUPER para cambiar esta opción. SQL_LOG_OFF = {0 | 1} Con valor 1SUPER para cambiar esta opción. SQL_LOG_UPDATE = {0 | 1} Esta variable está obsoleta, y es mapea a SQL_LOG_BIN. SQL_QUOTE_SHOW_CREATE = {0 | 1} Con valor 1, SHOW CREATE TABLE entrecomilla los nombres de tabla y columnas. Si se pone a 0, se desactiva el entrecomillado. Esta opción está activada por defecto, así que la replicación funciona para tablas con nombres de tabla y columna que no lo requieren. Consulte Sección 13.5.4.5, ?Sintaxis de SHOW CREATE TABLE?. SQL_SAFE_UPDATES = {0 | 1} Con valor 1, MySQL aborta comandos UPDATE o DELETE que no usan una clave en la cláusula WHERE o LIMIT . Esto hace posible cazar los comandos UPDATE o DELETE donde las claves no se usan apropiadamente y que probablemente cambiarían o borrarían un gran número de registros. SQL_SELECT_LIMIT = {value | DEFAULT} El máximo número de registros a retornar desde comandos SELECT . El valor por defecto para una nueva conexión es ?unlimited.? Si cambia este límite, el valor por defecto puede restaurarse usando un valor SQL_SELECT_LIMIT de DEFAULT. Si un SELECT tiene una cláusula LIMIT el LIMIT tiene preferencia sobre el valor de SQL_SELECT_LIMIT. SQL_SELECT_LIMIT no se aplica a comandos SELECT ejecutados en rutinas almacenadas. Tampoco se aplica a comandos SELECT que no producen un conjunto de resultados a ser retornado al cliente. Esto incluye comandos SELECT en subconsultas, CREATE TABLE ... SELECT, y INSERT INTO ... SELECT. SQL_WARNINGS = {0 | 1} Esta variable controla si comandos INSERT de un registro producen una cadena de información si hay una advertencia. Por defecto es 0. Cambie el valor a 1 para producir una cadena de información. TIMESTAMP = {timestamp_value | DEFAULT} Cambia la hora del cliente. Se usar para obtener la fecha y hora original si usa el log binario para restaurar registros. timestamp_value debe ser un Unix epoch timestamp, no un timestamp de MySQL. UNIQUE_CHECKS = {0 | 1} Con valor 1 (por defecto), se realizan chequeos en tablas InnoDB para índices secundarios. Con valor 0, no se hacen chequeos de valores únicos para entradas de índices insertados en el búffer de inserción de InnoDB. Si sabe con certeza que sus datos no contienen violaciones de valores únicos, puede ponerlo a 0 para acelerar importaciones de tablas grandes a InnoDB. Creditos: Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
ANALYZE TABLE
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
tbl_name
Este comando analiza y almacena la distribución de clave para una tabla. Durante el análisis, la tabla se bloquea con un bloqueo de lectura. En MySQL 5.0, funciona en tablas MyISAM, BDB, y InnoDB . Para tablas MyISAM , este comando es equivalente a usar myisamchk -a.
MyISAM
BDB
InnoDB
MySQL usa la distribución de claves almacenada para decidir el orden en que las tablas deben hacer los joins cuando realiza uno en algo que no sea una constante.
El comando retorna una tabla con las siguientes columnas:
Tabla
Op
analyze
Msg_type
status
error
info
warning
Msg_text
Puede chequear la distribución de claves almacenada con el comando SHOW INDEX . Consulte Sección 13.5.4.11, ?Sintaxis de SHOW INDEX?.
SHOW INDEX
Si la tabla no ha cambiado desde el último comando ANALYZE TABLE , la tabla no se vuelve a analizar.
En MySQL 5.0, los comandos ANALYZE TABLE se escriben en el log binario a no ser que la palabra clave NO_WRITE_TO_BINLOG opcional (o su alias LOCAL) se use.
NO_WRITE_TO_BINLOG
LOCAL
BACKUP TABLE
BACKUP TABLE tbl_name [, tbl_name] ... TO '/path/to/backup/directory'
/path/to/backup/directory
Nota: Este comando está obsoleto. Estamos trabajano en un mejor sustituto para este que proporcionará capacidades de copia de seguridad en línea. De momento, el script mysqlhotcopy puede usarse.
BACKUP TABLE copia al directorio de base de datos el mínimo número de ficheros de tablas necesarias para restaurar la tabla, tras volcar cualquier cambios almacenados en el buffer a disco. El comando funciona sólo para tablas MyISAM . Copia los ficheros de definición .frm y de datos .MYD . El fichero índice .MYI puede reconstruirse desde estos otros. El directorio debe especificarse con la ruta entera.
.frm
.MYD
.MYI
Antes de usar este comando consulte Sección 5.8.1, ?Copias de seguridad de bases de datos?.
Durante la copia de seguridad, se realiza un bloqueo de lectura para cada tabla, uno cada vez, mientras se hace la copia. Si quier hacer una copia de seguridad de varias tablas como una muestra (evitando que ninguna de ellas se cambie durante la operación de la copia de seguridad), debe realizar un comando LOCK TABLES para obtener un bloqueo de lectura para cada tabla en el grupo.
LOCK TABLES
backup
CHECK TABLE
CHECK TABLE tbl_name [, tbl_name] ... [option] ... option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
option
Chequea una tabla o tablas para errores. CHECK TABLE funciona para tablas MyISAM y InnoDB . Para tablas MyISAM , la estadística de clave se actualiza.
Desde MySQL 5.0.2, CHECK TABLE puede comprobar las vistas en busca de problemas tales como tablas que se referencian en la definición de la vista que ya no existe.
El comando CHECK TABLE retorna una tabla con las siguientes columnas:
check
Tenga en cuenta que el comando puede producir varios registros para información de cada tabla chequeada. El último registro tiene un valor Msg_type de status y Msg_text normalmente debe ser OK. Si no obtiene OK, o Table is already up to date debe realizar una reparación de la tabla. Consulte Sección 5.8.3, ?Mantenimiento de tablas y recuperación de un fallo catastrófico (crash)?. Table is already up to date significa que el motor de almacenamiento para la tabla indicada indica que no hay necesidad de chequear la tabla.
OK
Table is already up to date
Las distintas opciones de chequeo que pueden darse se muestran en la siguiente tabla. Estas opciones se aplican sólo para tablas MyISAM y se ignoran en tablas InnoDB y vistas.
QUICK
FAST
CHANGED
MEDIUM
EXTENDED
Si ninguna de las opciones QUICK, MEDIUM, o EXTENDED se especifica, el tipo de chequeo por defecto para tablas de formato dinámico MyISAM es MEDIUM. Esto es lo mismo que ejecutar myisamchk --medium-check tbl_name en la tabla. El tipo de chequeo por defecto también es MEDIUM para tablas MyISAM de formato estático, a no ser que se especifique CHANGED o FAST. En tal caso, por defecto es QUICK. El escaneo de registro se evita para CHANGED y FAST porque los registros están corruptos muy raramente.
Puede combinar opciones de chequeo, como en el siguiente ejemplo, que realiza un chequeo rápido de la tabla para ver si se cerró correctamente:
CHECK TABLE test_table FAST QUICK;
Nota: En algunos casos, CHECK TABLE cambia la tabla. Esto ocurre si la tabla se marca como ?corrupted? o ?not closed properly? pero CHECK TABLE no encuentra ningún problema en la tabla. En este caso, CHECK TABLE marca la tabla como correcta.
Si una tabla está corrupta, es más probable que el problema esté en el índice y no en la parte de datos. Todos los tipos de chequeo chequean los índices profundamente y deberían encontrar la mayoría de errores.
Si quiere chequear una tabla que asume como correcta, no debe usar opciones de chequeo o la opción QUICK. Ésta debe usarse cuando tiene prisa y puede permitirse el pequeño riesgo que QUICK no encuentre un error en el fichero de datos. (En la mayoría de casos, MySQL debería encontrar, bajo uso normal, cualquier error en el fichero de datos. Si esto ocurre, la tabla se marca como ?corrupted? y no puede usarse hasta que se repare.)
FAST y CHANGED están pensados para usar desde un script (por ejemplo, para ejecutarse desde cron) si quiere chequear sus tablas de vez en cuando. En la mayoría de casos, FAST se prefiere en lugar de CHANGED. (El único caso en que no es el método preferido es cuando sospecha que ha encontrado un bug en el código MyISAM .)
EXTENDED debe usarse sólo después de ejecutar un chequeo normal pero todavía obtiene errores extraños de la tabla cuando MySQL intenta actualizar un registro o encuentra un registro mediante la clave. (Esto es muy improbable si un chequeo normal ha tenido éxito.)
Algunos problemas reportados por CHECK TABLE no pueden corregirse automáticamente:
Found row where the auto_increment column has the value 0
Esto significa que tiene un registro en la tabla donde la columna AUTO_INCREMENT contiene un valor de índice de 0. (Es posible crear un registro donde la columna AUTO_INCREMENT es 0 poneindo la columna explícitamente a 0 con un comando UPDATE .)
AUTO_INCREMENT
UPDATE
Esto no es un error por si mismo, pero puede causar problemas si decide volcar la tabla y restaurarla o realizar un ALTER TABLE en la tabla. En este caso, la columna AUTO_INCREMENT cambia los valores según las reglas de las columnas AUTO_INCREMENT , que pueden causar problemas tales como errores de clave duplicada.
ALTER TABLE
Para evitar las advertencias, símplemente ejecute un comando UPDATE para poner en la columna un valor distinto a 0.
CHECKSUM TABLE
CHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]
Reporta un checksum de tabla.
Si QUICK se especifica, el checksum de la tabla se reporta si está disponible, o NULL en otro caso. Esto es muy rápido. Un checksum en vivo está permitido especificando la opción de tabla CHECKSUM=1 , actualmente sólo soportado por tablas MyISAM . Consulte Sección 13.1.5, ?Sintaxis de CREATE TABLE?.
NULL
CHECKSUM=1
CREATE TABLE
En modo EXTENDED la tabla completa se lee registro a registro y se calcula el checksum. Esto puede ser muy lento para tablas grandes.
Por defecto, si no se especifica ni QUICK ni EXTENDED , MySQL retorna un checksum en vivo si el motor de tabla lo soporta y escanea la tabla de otro modo.
CHECKSUM TABLE retorna NULL para tablas no existentes. Desde MySQL 5.0.3, se genera una advertencia para esta condición.
OPTIMIZE TABLE
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
OPTIMIZE TABLE debe usarse si ha borrado una gran parte de la tabla o si ha hecho varios cambios en una tabla con registros de longitud variable (tablas que tienen columnas VARCHAR, BLOB, o TEXT ). Los registros borrados se mantienen en una lista enlazada y operaciones INSERT posteriores reúsan posiciones de antiguos registros. Puede usar OPTIMIZE TABLE para reclamar el usuario no usado y para defragmentar el fichero de datos.
VARCHAR
BLOB
TEXT
INSERT
En la mayoría de inicializaciones, no necesita ejecutar OPTIMIZE TABLE para nada. Incluso si hace muchas actualizaciones a registros de longitud variables, no es probable que necesite hacerlo más de una vez a la semana o mes y sólo en ciertas tablas.
Actualmente, OPTIMIZE TABLE funciona sólo en tablas MyISAM, BDB y InnoDB .
Para tablas MyISAM , OPTIMIZE TABLE funciona como sigue:
Para tablas BDB , OPTIMIZE TABLE es mapea como ANALYZE TABLE. Para tablas InnoDB , se mapea con ALTER TABLE, que reconstruye la tabla. Reconstruye las estadísticas actualizadas de índice y libera espacio no usado en el índice clusterizado. Consulte Sección 13.5.2.1, ?Sintaxis de ANALYZE TABLE?.
Puede hacer que OPTIMIZE TABLE funcione con otros tipos de tabla arrancando mysqld con la opción --skip-new o --safe-mode ; en este caso OPTIMIZE TABLE se mapea con ALTER TABLE.
--skip-new
--safe-mode
Tenga en ceunta que MySQL bloquea la tabla mientras se ejecuta OPTIMIZE TABLE .
En MySQL 5.0, los comandos OPTIMIZE TABLE se escriben en el log binario a no ser que la palabra NO_WRITE_TO_BINLOG opcional(o su alias LOCAL) se use. Esto se hace para que los comandos OPTIMIZE TABLE se usen en MySQL server actuando como maestro de replicación se replique por defecto en el esclavo de replicación.
REPAIR TABLE
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
REPAIR TABLE repara una tabla posiblemente corrupta. Por defecto, tiene el mismo efecto que myisamchk --recover tbl_name. REPAIR TABLE funciona sólo en tablas MyISAM.
Normalmente nunca debe ejecutar este comando. Sin embargo, si hay un desastre, REPAIR TABLE puede recuperar todos los datos de una tabla MyISAM . Si sus tablas se corrompen a menudo, debe intentar encontrar la razón de lo que lo causa, para eliminar la necesidad de usar REPAIR TABLE. Consulte Sección A.4.2, ?Qué hacer si MySQL sigue fallando (crashing)?. Consulte Sección 14.1.4, ?Problemas en tablas MyISAM?.
repair
El comando REPAIR TABLE puede producir muchos registros de información para cada tabla reparada. El último registro tiene un valor Msg_type de status y Msg_test normalmente debe ser OK. Si no obtiene OK, debe intentar reparar la tabla con myisamchk --safe-recover, ya que REPAIR TABLE no implementa todas las opciones de myisamchk. Plaenamos hacerlo más flexible en el futuro.
Msg_test
Si se da QUICK , REPAIR TABLE intenta reparar sólo el árbol índice. Este tipo de reparación es como lo que hace myisamchk --recover --quick.
Si usa EXTENDED, MySQL crea el índice registro a registro en lugar de crear un índice a la vez ordenando. Este tipo de reparación es como el hecho por myisamchk --safe-recover.
También hay un modo USE_FRM disponible en MySQL 5.0 para REPAIR TABLE. Use esto si el fichero índice .MYI no existe o su cabecera está corrupta. En este modo, MySQL recrea el fichero .MYI usando información desde el fichero .frm . Este tipo de reparación no puede hacerse con myisamchk. Nota: Use este modo sólo si no puede usar modos REPAIR normalmente. La cabecera .MYI contiene información importante de metadatos (en particular, los valores actuales AUTO_INCREMENT y Delete link) que se pierden en REPAIR ... USE_FRM. No use USE_FRM si la tabla está comprimida, ya que esta información se almacena en el fichero .MYI .
USE_FRM
REPAIR
Delete link
REPAIR ... USE_FRM
En MySQL 5.0, los comandos REPAIR TABLE se escriben en el log binario a no ser que la palabra opcional NO_WRITE_TO_BINLOG (o su alias LOCAL) se use.
Atención: Si el servidor muere durante una operación REPAIR TABLE, es esencial tras restaurarla que inmediatamente ejecute otro comando REPAIR TABLE para la tabla antes de realizar cualquier otra operación en ella. (Siempre es una buena idea empezar haciendo una copia de seguridad.) En el peor caso, puede tener un nuevo fichero índice limpio sin información acerca del fichero de datos, y luego la siguiente operación que realice puede sobreescribir el fichero de datos. Este es un escenario improbable pero posible.
RESTORE TABLE
RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory'
Restaura la tabla o tablas de una copia de seguridad que se hizo con BACKUP TABLE. Las tablas existentes no se sobreescriben; si trata restaurar una tabla existente, obtiene un error. Pero como BACKUP TABLE, RESTORE TABLE actualmente funciona sólo para tablas MyISAM . El directorio debe especificarse como una ruta completa.
La copia de seguridad para cada tabla consiste en su fichero de formato .frm y fichero de datos .MYD . La operación de restauración restaura aquellos ficheros, luego los usa para reconstruir el fichero índice .MYI. La restauración tarda más tiempo que la copia de seguridad debido a la necesidad de reescribir los índices. Mientras más índices tenga la tabla, más tarda.
restore
SET
SET variable_assignment [, variable_assignment] ... variable_assignment: user_var_name = expr | [GLOBAL | SESSION] system_var_name = expr | @@[global. | session.]system_var_name = expr
variable_assignment
user_var_name
expr
system_var_name
SET inicializa distintos tipos de variables que afectan la operación del servidor o de su cliente. Puede usarse para asignar valores a las variables de usuario o de sistema.
El comando SET PASSWORD para asignar contraseñas de cuenta se describen en Sección 13.5.1.5, ?Sintaxis de SET PASSWORD?.
SET PASSWORD
La mayoría del sistema puede cambiarse en tiempo de ejecución. Las variables de sistema que pueden describirse dinámicamente se describen en Sección 5.3.3.1, ?Variables de sistema dinámicas?.
Nota: Las versiones antiguas de MySQL empleaban SET OPTION para este comando, pero su uso está obsoleto en favor de SET.
SET OPTION
El siguiente ejemplo muestra las distintas sintaxis que puede usar para cambiar las variables.
Una variable de usuario se escribe como @var_name y puede cambiarse como sigue:
@var_name
var_name
SET @var_name = expr;
Más información sobre variables de usuario se da en Sección 9.3, ?Variables de usuario?.
Se puede referir a las variables de sistema en comandos SET como var_name. El nombre puede ir precedido opcionalmente por GLOBAL o @@global. para indicar explícitamente que la variable es global, o por SESSION, @@session., o @@ para indicar que es una variable de sesión. LOCAL y @@local. son sinónimos para SESSION y @@session.. Si no hay modificador presente, SET asigna un valor a la variable de sesión.
GLOBAL
@@global.
SESSION
@@session.
@@
@@local.
La sintaxis @@var_name para variables de sistema se soporta para hacer la sintaxis de MySQL compatible con otros sistemas de base de datos.
@@var_name
Si cambia varias variables de sistema en el mismo comando, la última opción GLOBAL o SESSION usada se usa para variables que no tienen modo especificado.
SET sort_buffer_size=10000; SET @@local.sort_buffer_size=10000; SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
Si cambia una variable de sistema usando SESSION (por defecto), el valor queda en efecto hasta que la sesión actual finaliza o hasta que cambia la variable con un valor distinto. Si cambia la variable de sistema usando GLOBAL, que requiere el permiso SUPER , el valor se recuerda y se usa para nuevas conexiones hasta que el servidor se reinicia. Si quiere hacer un cambio de variable permanente, debe ponerlo en un fichero de opciones. Consulte Sección 4.3.2, ?Usar ficheros de opciones?.
SUPER
Para evitar uso incorrecto, MySQL produce un error si usa SET GLOBAL con una variable que sólo puede ser usada con SET SESSION o si no especifica GLOBAL (o @@) cuando cambie una variable global.
SET GLOBAL
SET SESSION
Si quiere cambiar una variable SESSION al valor GLOBAL o un valor GLOBAL al valor de compilación de MySQL por defecto, puede hacerlo con DEFAULT. Por ejemplo, los siguientes dos comandos son idénticos en cambiar los valores de sesión o max_join_size al valor global:
DEFAULT
max_join_size
SET max_join_size=DEFAULT; SET @@session.max_join_size=@@global.max_join_size;
Puede obtener una lista de la mayoría de variables de sistema con SHOW VARIABLES. (Consulte Sección 13.5.4.21, ?Sintaxis de SHOW VARIABLES?.) Para obtener un nombre de variable específico, use una cláusula LIKE commo se muestra:
SHOW VARIABLES
LIKE
SHOW VARIABLES LIKE 'max_join_size'; SHOW GLOBAL VARIABLES LIKE 'max_join_size';
Para obtener una lista de variables cuyos nombres coinciden con un patrón, use el comodín '%':
%
SHOW VARIABLES LIKE 'have%'; SHOW GLOBAL VARIABLES LIKE 'have%';
El comodín puede usarse en cualquier posición dentro del patrón para coincidir.
Puede obtener el valor de un valor específico usando la sintaxis @@[global.|local.]var_name con SELECT:
@@[global.|local.]var_name
SELECT
SELECT @@max_join_size, @@global.max_join_size;
Cuando recibe una variable con SELECT @@var_name (esto es,no especifica global., session., o local.), MySQL retorna el valor SESSION si existe y el valor GLOBAL en otro caso.
SELECT @@var_name
global.
session.
local.
La siguiente lista describe variables que tienen sintaxis no estándar o que no se describe en la lista de variables de sistema que se encuentra en Sección 5.3.3, ?Variables de sistema del servidor?. Aunque estas variables no se muestran con SHOW VARIABLES, puede obtener sus valores con SELECT (con la excepción de CHARACTER SET y SET NAMES). Por ejemplo:
CHARACTER SET
SET NAMES
mysql> SELECT @@AUTOCOMMIT; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+
AUTOCOMMIT = {0 | 1}
Pone el modo autocommit . Con valor 1, todos los cambios de una tabla toman efecto inmediatamente. Si se pone a 0, debe usar COMMIT para aceptar una transacción o ROLLBACK para cancelarla. Si cambia el modo AUTOCOMMIT de 0 a 1, MySQL realiza un COMMIT automático de cualquier transacción abierta . Otra forma de comenzar una transacción es usar un comando START TRANSACTION o BEGIN. Consulte Sección 13.4.1, ?Sintaxis de START TRANSACTION, COMMIT y ROLLBACK?.
1
0
COMMIT
ROLLBACK
AUTOCOMMIT
START TRANSACTION
BEGIN
BIG_TABLES = {0 | 1}
Si se pone a 1, todas las tablas temporales se almacenan en disco en lugar que en memoria. Esto es un poco lento, pero el error The table tbl_name is full no ocurre para operaciones SELECT que requieran una tabla temporal grande. El valor por defecto para una nueva conexión es 0 (use tablas temporales en memoria). Normalmente, nunca debería necesitar usar esta variable, ya que MySQL 5.0 convierte automáticamente tablas en memoria a tablas en disco como se requiere. (Nota: Esta variable se llamaba préviamente SQL_BIG_TABLES.)
The table tbl_name is full
SQL_BIG_TABLES
CHARACTER SET {charset_name | DEFAULT}
charset_name
Esto mapea todas las cadenas desde y hacia el cliente con el mapeo dado. Puede añadir nuevos mapeos editando sql/convert.cc en la distribución fuente MySQL. En MySQL 5.0, SET CHARACTER SET cambia tres variables de sistema character_set_client y character_set_results se actualizan con el conjunto de carácteres dado, y character_set_connection al valor de character_set_database.
sql/convert.cc
SET CHARACTER SET
character_set_client
character_set_results
character_set_connection
character_set_database
El mapeo por defecto puede restaurarse usando el valor DEFAULT.
Tenga en cuenta que la sintaxis para SET CHARACTER SET difiere de la de la mayoría de otras opciones.
FOREIGN_KEY_CHECKS = {0 | 1}
Con valor de 1 (por defecto), las claves foráneas para tablas InnoDB se chequean. Si se pone a 0, se ignoran. Deshabilitar el chequeo de clave foránea puede ser útil para recargar tablas InnoDB en un orden distinto que el requerido por sus relaciones padre/hijo, Consulte Sección 15.6.4, ?Restricciones (constraints) FOREIGN KEY?.
FOREIGN KEY
IDENTITY = value
value
La variable es un sinónimo para la variable LAST_INSERT_ID . Existe por compatibilidad con otras bases de datos. Puede leer su valor con SELECT @@IDENTITY, y cambiarlo mediante SET IDENTITY.
LAST_INSERT_ID
SELECT @@IDENTITY
SET IDENTITY
INSERT_ID = value
Cambia el valor a ser usado por los comandos INSERT o ALTER TABLE al insertar un valor AUTO_INCREMENT . Esto se usa principalmente con el lob binario.
LAST_INSERT_ID = value
Cambia el valor a ser retornado de LAST_INSERT_ID(). Esto se almacena en el log binario cuando usa LAST_INSERT_ID() en un comando que actualice una tabla. Cambiar esta variable no actualiza el valor retornado por la función de la mysql_insert_id() API de C.
LAST_INSERT_ID()
mysql_insert_id()
NAMES {'charset_name' | DEFAULT}
SET NAMES cambia tres variables de sesión de sistema character_set_client, character_set_connection, y character_set_results al conjunto de carácteres dado. Cambiar character_set_connection a charset_name también cambia collation_connection a la colación por defecto para charset_name.
collation_connection
El mapeo por defecto puede restaurarse usando un valor de DEFAULT.
Tenga en cuenta que la sintaxis para SET NAMES difiere de la usada para la mayoría de otras opciones.
SQL_NOTES = {0 | 1}
Con el valor 1 (por defecto), advertencias del nivel Note se registran. Con valor 0, las advertencias Note se suprimen. mysqldump incluye la salida para cambiar esta variable a 0 así que recargar el fichero volcado no produce advertencias para eventos que no afectan a la integridad de la operación de recarga. SQL_NOTES se añadió en MySQL 5.0.3.
Note
SQL_NOTES
SQL_AUTO_IS_NULL = {0 | 1}
Con valor 1 (por defecto), puede encontrar el último registro insertado para una tabla que contiene una columna AUTO_INCREMENT usando el siguiente constructor:
WHERE auto_increment_column IS NULL
auto_increment_column
Este comportamiento lo usan algunos programas ODBC, como Access.
SQL_BIG_SELECTS = {0 | 1}
Con valor 0, MySQL aborta los comandos SELECT que probablemente tardarán mucho tiempo (esto es, comandos para los que el optimizador estima que el número de registros examinados excede el valor de max_join_size). Esto es útil cuando un comando WHERE no aconsejable se ejecuta. El valor por defecto para una nueva conexión es 1, que permite todos los comandos SELECT .
WHERE
Si cambia la variable de sistema max_join_size a un valor distinto a DEFAULT, SQL_BIG_SELECTS se pone a 0.
SQL_BIG_SELECTS
SQL_BUFFER_RESULT = {0 | 1}
SQL_BUFFER_RESULT fuerza los resultados de los comandos SELECT a poner en tablas temporales. Esto ayuda a MySQL a liberar los bloqueos de tabla rápidamente y pueden ser beneficioso en caso que tarde un largo tiempo para enviar resultados al cliente.
SQL_BUFFER_RESULT
SQL_LOG_BIN = {0 | 1}
Con valor 0, no se realiza logueo en el log binario para el cliente. El cliente debe tener el permiso SUPER para cambiar esta opción.
SQL_LOG_OFF = {0 | 1}
Con valor 1SUPER para cambiar esta opción.
SQL_LOG_UPDATE = {0 | 1}
Esta variable está obsoleta, y es mapea a SQL_LOG_BIN.
SQL_LOG_BIN
SQL_QUOTE_SHOW_CREATE = {0 | 1}
Con valor 1, SHOW CREATE TABLE entrecomilla los nombres de tabla y columnas. Si se pone a 0, se desactiva el entrecomillado. Esta opción está activada por defecto, así que la replicación funciona para tablas con nombres de tabla y columna que no lo requieren. Consulte Sección 13.5.4.5, ?Sintaxis de SHOW CREATE TABLE?.
SHOW CREATE TABLE
SQL_SAFE_UPDATES = {0 | 1}
Con valor 1, MySQL aborta comandos UPDATE o DELETE que no usan una clave en la cláusula WHERE o LIMIT . Esto hace posible cazar los comandos UPDATE o DELETE donde las claves no se usan apropiadamente y que probablemente cambiarían o borrarían un gran número de registros.
DELETE
LIMIT
SQL_SELECT_LIMIT = {value | DEFAULT}
El máximo número de registros a retornar desde comandos SELECT . El valor por defecto para una nueva conexión es ?unlimited.? Si cambia este límite, el valor por defecto puede restaurarse usando un valor SQL_SELECT_LIMIT de DEFAULT.
SQL_SELECT_LIMIT
Si un SELECT tiene una cláusula LIMIT el LIMIT tiene preferencia sobre el valor de SQL_SELECT_LIMIT.
SQL_SELECT_LIMIT no se aplica a comandos SELECT ejecutados en rutinas almacenadas. Tampoco se aplica a comandos SELECT que no producen un conjunto de resultados a ser retornado al cliente. Esto incluye comandos SELECT en subconsultas, CREATE TABLE ... SELECT, y INSERT INTO ... SELECT.
CREATE TABLE ... SELECT
INSERT INTO ... SELECT
SQL_WARNINGS = {0 | 1}
Esta variable controla si comandos INSERT de un registro producen una cadena de información si hay una advertencia. Por defecto es 0. Cambie el valor a 1 para producir una cadena de información.
TIMESTAMP = {timestamp_value | DEFAULT}
timestamp_value
Cambia la hora del cliente. Se usar para obtener la fecha y hora original si usa el log binario para restaurar registros. timestamp_value debe ser un Unix epoch timestamp, no un timestamp de MySQL.
UNIQUE_CHECKS = {0 | 1}
Con valor 1 (por defecto), se realizan chequeos en tablas InnoDB para índices secundarios. Con valor 0, no se hacen chequeos de valores únicos para entradas de índices insertados en el búffer de inserción de InnoDB. Si sabe con certeza que sus datos no contienen violaciones de valores únicos, puede ponerlo a 0 para acelerar importaciones de tablas grandes a InnoDB.
Creditos: Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.