sql >> Base de Datos >  >> RDS >> Mysql

Cómo deshabilitar el modo estricto de MySQL

El modo estricto de MySQL y MariaDB controla cómo se manejan los valores inválidos o faltantes en las consultas de cambio de datos; esto incluye instrucciones INSERT, UPDATE y CREATE TABLE. Con el modo estricto de MySQL habilitado, que es el estado predeterminado, los datos no válidos o faltantes pueden generar advertencias o errores al intentar procesar la consulta.

Cuando el modo estricto está deshabilitado, la misma consulta tendría sus valores inválidos o faltantes ajustados y produciría una advertencia simple. Este puede parecer el resultado preferido, sin embargo, con el modo estricto deshabilitado, ciertas acciones pueden causar resultados inesperados; por ejemplo, cuando el valor que se inserta supera el límite máximo de caracteres, se truncará para ajustarse al límite.

Hay varias razones por las que puede ser necesario deshabilitar el modo estricto de MySQL; sin embargo, la más común es cuando un servidor ejecuta WHMCS; este es un requisito de esa herramienta.

Comprobación previa al vuelo

  • Estas instrucciones están diseñadas específicamente para deshabilitar el modo estricto de MySQL en un servidor Liquid Web administrado con cPanel.
  • El servidor debe ejecutar MySQL 5.6/5.7 o MariaDB 10.x
  • Será necesario tener acceso a la línea de comandos y al nivel raíz a través de SSH para seguir este tutorial.

Paso n.º 1:¡Realice copias de seguridad, siempre!

Siempre que modifique archivos en un servidor, siempre es una buena práctica realizar algún tipo de copia de seguridad de antemano. Esto garantiza que tenga una forma de revertir los cambios si algo sale mal; también es beneficioso porque ayuda a rastrear cuándo y qué cambios se realizaron.

Mientras está conectado a SSH con el usuario root, haga lo siguiente:

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

El comando anterior usa 'BASH brace expansion' para hacer una copia de seguridad del archivo en su directorio original.

Paso n.º 2:deshabilite el modo estricto de MySQL

Según el servidor y las configuraciones actuales, es posible que deba editar uno o ambos de los siguientes archivos en el servidor. Generalmente, las líneas de configuración relevantes están solo en una de ellas, sin embargo, podría estar en cualquiera de ellas sin causar problemas; por lo que, en general, es mejor comprobar ambos.

Para editar los archivos, abrirá el archivo con su editor de línea de comandos favorito. En este ejemplo, usamos 'vim'.

vim /usr/my.cnf
vim /etc/my.cnf

En vim, puede presionar "a" o "i" para ingresar al modo de inserción de texto; presionando la tecla de escape (Esc) en su teclado lo regresa al modo de comando. Para refrescar la edición de archivos con vim, consulte nuestro Tutorial para nuevos usuarios:descripción general del editor de texto Vim.

Dentro de cada archivo anterior, buscará una línea con el siguiente contenido:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

Si encuentra una línea similar a la anterior que configura la variable `sql_mode`, deberá reemplazarla con la siguiente línea para deshabilitar el modo estricto de MySQL.

sql_mode=""

Una vez que se haya realizado este ajuste, o haya confirmado que no es necesario ajustar el archivo, guardará y cerrará el archivo.

Paso n.º 3:reiniciar el servicio MySQL

Finalmente, para que estos cambios sean efectivos, deberá reiniciar el servicio MySQL, ya que solo leerá los archivos de configuración cuando se cargue inicialmente. Para obligar a MySQL a usar los nuevos archivos de configuración, debe hacer lo siguiente:

Para servidores CentOS 7:
systemctl restart mysql

Para CentOS 6 y anteriores:
/etc/init.d/mysql restart

Después de emitir este comando en el servidor, el servicio MySQL se reiniciará y cargará los cambios realizados. Si se siguieron y completaron todas las instrucciones, entonces el modo estricto de MySQL ahora debería estar deshabilitado.

Para verificar que el proceso se completó correctamente, puede ejecutar lo siguiente:

mysql -e "SELECT @@sql_mode;"

El resultado puede ser similar al siguiente:

+--------------------------------------------+
| @@sql_mode
+--------------------------------------------+
| NO_AUTO_CREATE_USER
+--------------------------------------------+

Si tiene alguna pregunta o no se siente cómodo haciendo estos cambios usted mismo, no dude en comunicarse con Heroic Support®.