Modo actualización segura en MySQL. Error Code: 1175. You are using safe update mode
Si trabajas con MySQL, casi seguro que unas pocas de veces te has chocado con este tipo de error.
Si has hecho un curso de MySQL, seguro que es de las primeras cosas que te han enseñado.
Y por supuesto, si usas MySQL Workbench, lo has sufrido sí o sí.
El Error
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.
To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
Entiende por qué ocurre
El modo de actualización segura en MySQL está diseñado para evitar actualizaciones o borrados accidentales de datos. Requiere que cualquier operación UPDATE o DELETE incluya una cláusula WHERE que utilice una columna de clave primaria o limite la cantidad de filas afectadas.
Ejemplo de error
Vamos a intentar modificar la tabla Familia. Todas las familias que viven en Sevilla las vamos a mudar a Jaén.
update Familia set name='JAEN' where name='SEVILLA';
La columna name no es clave primaria, ni tampoco estamos limitando el número de filas afectadas.
Solución
SET SQL_SAFE_UPDATES = 0;
Este comando establece la variable SQL_SAFE_UPDATES
en 0, lo que desactiva el modo de actualización segura. Recuerda que este cambio es temporal y solo se aplica a la sesión actual.
Tras ejecutar este comando, ya puedes ejecutar el comando anterior, y funcionará a la perfección 😉
Cómo deshabilitar el modo de actualización segura en MySQL Workbench
Si estás utilizando MySQL Workbench y deseas deshabilitar el modo de actualización segura:
- Abre MySQL Workbench y conéctate a su base de datos.
- Ve al menú ‘Editar’ y selecciona ‘Preferencias’. (Imagen 1)
- En la ventana ‘Preferencias’, haz clic en “Editor SQL”.
- En la sección Editor SQL, abajo del todo, desmarca la opción que dice ‘Actualizaciones seguras (rechaza ACTUALIZACIONES y ELIMINACIONES sin cláusula WHERE)’. (Imagen 2)
- Haga clic en «Aceptar» para guardar los cambios.
Nota: Este cambio es permanente, y ya no se aplicará esta restricción a ninguna sesión nueva u otra nueva conexión que realices.