¿Actualizando a MySQL 5.7? Cuidado con el nuevo modo ESTRICTO

Esta publicación de blog analiza las ramificaciones del modo ESTRICTO en MySQL 5.7.

En breve

Por defecto, MySQL 5.7 es mucho más «ajustado» que las versiones anteriores de MySQL. Eso puede frustrar su aplicación. Para resolver esto temporalmente, cambie
MODO_SQL a
SIN_MOTOR_SUSTITUCIÓN (como en MySQL 5.6):

MySQL 5.7, fechas y valores predeterminados

el defecto
MODO_SQL en MySQL 5.7 es:

Lo que hace que MySQL funcione de forma «ajustada» para las tablas de transacciones.

«El modo estrecho controla cómo MySQL maneja los valores inválidos o faltantes en declaraciones de cambio de datos como INSERT o UPDATE. Un valor puede no ser válido por varias razones. Por ejemplo, podría tener un tipo de datos incorrecto para la columna o podría estar fuera de rango. Falta un valor cuando una nueva fila que se va a insertar no contiene un valor para un no-NULL columna que no explícitamente DEFAULT cláusula en su definición. (Para NULL columna, NULL se ingresa si falta el valor.) El modo estricto también afecta las declaraciones DDL como CREATE TABLE.

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict

Lo que también plantea un problema interesante con el valor predeterminado para la columna de fecha/fechahora. Digamos que tenemos la siguiente tabla en MySQL 5.7 y desea insertar una fila en ella:

tu
Fecha del evento no tiene un valor predeterminado, y hemos insertado una fila sin un valor para
Fecha del evento. Lo que provoca un error en MySQL 5.7. Si no podemos usar NULL, crearemos un valor predeterminado. Estrictamente hablando, no podemos usar «0000-00-00» o:

Usaremos una fecha real:

O, un enfoque mucho mejor es cambiar la lógica de la aplicación a:

  • permite NULL, o
  • siempre ingrese fechas reales (es decir, use la función AHORA ()), o
  • cambie el campo de la tabla en la marca de tiempo y actualícelo automáticamente si no se ha asignado ningún valor
Lee mas

Lea el artículo de Morgan Tocker sobre cómo transición a MySQL 5.7, y comprobar el completo documentación de sql_mode

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario