Cómo deshabilitar el modo estricto de MySQL

Algunos Contenido Los sistemas de gestión como Typo, Contao, Contenido u otros sistemas tienen problemas con el desde MySQL 5.1 disponible en Modo Estricto. Este ha sido el ajuste predeterminado desde la versión 5.7.

Para poder utilizar estos sistemas CMS, existe la posibilidad de desactivar el modo estricto en el lado del servidor. Por supuesto, esto sólo se recomienda condicionalmente.

¿Qué hace el modo estricto?

El estricto modo de MySQL/MariaDB controla cómo se manejan los valores inválidos o faltantes en las consultas de cambio de datos, incluyendo las declaraciones de INSERTAR, ACTUALIZAR y CREAR.

Inválido o desaparecido Datos provocan advertencias o errores cuando se ejecuta la consulta SQL. Si el modo Scrict está desactivado, las consultas no válidas o los valores que faltan se ajustan y se emite una simple advertencia. Esto puede llevar a resultados inesperados.

Un ejemplo sería un límite de caracteres. Si se desactiva el modo estricto, se cortarán los caracteres sobrantes para que quepan.

¿Por qué esto sólo ocurre con algunos sistemas de CMS?

Sólo se puede especular. Probablemente el código es tan extenso que nadie puede descifrarlo. En un sistema de gestión de contenidos trabajan muchas personas, a veces traen funciones individuales que luego ya no se miran durante años. Mientras no se produzcan problemas graves no es tan malo.

Con un sistema como el whmcs, que también se ve afectado, la situación es bastante diferente. Si se truncan datos importantes, se producirán asignaciones incorrectas. Esto puede ser problemático en el caso de un acuerdo.

¿Dónde se pueden aplicar estas instrucciones?

Las instrucciones se refieren a sistemas Linux con MySQL 5.6/5.7 o MariaDB 10.1 y más arriba donde el Modo Estricto está activo.

Se requiere acceso a la raíz para hacer los cambios. Nuestras instrucciones siempre se refieren a Centos Linux. Con otras distribuciones, los archivos de configuración pueden estar ubicados en otros directorios.

Paso 1: Crear copias de seguridad

Al editar los archivos, siempre debes hacer una copia de seguridad. Es demasiado fácil borrar algo sin querer.

cp -a /etc/my.cnf{,.strict.bak}

El comando crea un archivo my.cnf.strict.bak del my.cnf en el mismo directorio.

Paso 2: Deshabilitar el modo estricto de MySQL

El archivo normalmente no contiene sql_mode=... por lo que se debe añadir la siguiente línea a la sección [mysqld] :

sql_mode=""

Paso 3: Reiniciar el servicio de MySQL

Después de editar el archivo, el servicio debe ser reiniciado para aplicar los cambios.

sistema de reinicio de mariadb

Después de reiniciar el servicio, puede comprobar la configuración ejecutando el siguiente comando. Aquí como un ejemplo con la contraseña en un Servidor Plesk. Alternativamente con el root y la contraseña.

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"

Entonces debería aparecer el siguiente retorno:

+————+

| @@sql_mode |

+————+

| |

+————+

Artículos de actualidad