Código de error de MySQL: 1175 durante UPDATE en MySQL Workbench

Estoy tratando de actualizar la columna visited para darle el valor 1. Utilizo el banco de trabajo MySQL y estoy escribiendo la statement en el editor SQL desde el banco de trabajo. Estoy escribiendo el siguiente comando:

 UPDATE tablename SET columnname=1; 

Me da el siguiente error:

Está utilizando el modo de actualización segura e intentó actualizar una tabla sin un WHERE que utiliza una columna KEY Para deshabilitar el modo seguro, alternar la opción ….

Seguí las instrucciones y desactivé la opción de safe update del menú Edit , luego Preferences luego SQL Editor . El mismo error aún aparece y no puedo actualizar este valor. Por favor, dime que esta mal?

Parece que su sesión MySql tiene configurada la opción de actualizaciones seguras . Esto significa que no puede actualizar o eliminar registros sin especificar una clave (por ejemplo, primary key ) en la cláusula where.

Tratar:

 SET SQL_SAFE_UPDATES = 0; 

O puede modificar su consulta para seguir la regla (use primary key en la where clause ).

Siga los siguientes pasos antes de ejecutar el comando UPDATE: en MySQL Workbench

  1. Ir a Edit -> Preferences
  2. Haga clic en la pestaña "SQL Editor" y uncheck check box “Actualizaciones seguras”
  3. Query -> Reconnect to Server // cerrar sesión y luego iniciar sesión
  4. Ahora ejecuta tu consulta SQL

ps, ¡No es necesario reiniciar el daemon de MySQL!

 SET SQL_SAFE_UPDATES=0; UPDATE tablename SET columnname=1; SET SQL_SAFE_UPDATES=1; 

Todo lo que se necesita es: iniciar una nueva consulta y ejecutar:

 SET SQL_SAFE_UPDATES = 0; 

Luego: ejecute la consulta que estaba tratando de ejecutar que no estaba funcionando previamente.

No es necesario establecer SQL_SAFE_UPDATES en 0 , realmente lo desalentaría a hacerlo de esa manera. Solo agregue en la cláusula WHERE un valor KEY que coincida con todo, como una clave principal, comparando con 0, de modo que en lugar de escribir:

 UPDATE customers SET countryCode = 'USA' WHERE country = 'USA'; -- which gives the error, you just write: UPDATE customers SET countryCode = 'USA' WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more. 

Ahora puede estar seguro de que cada registro se actualiza como espera.

  1. Preferencias …
  2. “Actualizaciones seguras” …
  3. Reiniciar el servidor

Preferencias ...

Actualizaciones seguras Reiniciar el servidor

 SET SQL_SAFE_UPDATES=0; 

O

Ir a Edit --> Preferences

Haga clic en la pestaña SQL Queries y desmarque la checkbox Safe Updates

Query --> Reconnect to Server

Ahora ejecuta tu consulta sql

Si está en modo seguro, debe proporcionar el id en la cláusula where. ¡Entonces algo como esto debería funcionar!

 UPDATE tablename SET columnname=1 where id>0 

Encontré la respuesta. El problema es que debo preceder el nombre de la tabla con el nombre del esquema. es decir, el comando debería ser:

 UPDATE schemaname.tablename SET columnname=1; 

Gracias a todos.

En MySQL Workbech versión 6.2 no sale de las opciones Preferencia SQLQueries .

En este caso, es posible usar: SET SQL_SAFE_UPDATES=0;

La solución más simple es definir el límite de fila y ejecutar. Esto se hace por razones de seguridad.

Código de error: 1175. Está utilizando el modo de actualización segura e intentó actualizar una tabla sin un WHERE que utiliza una columna KEY Para deshabilitar el modo seguro, cambie la opción en Preferences -> SQL Editor y vuelva a conectar.

Desactivar el “modo de actualización segura” temporal

 SET SQL_SAFE_UPDATES = 0; UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net'; SET SQL_SAFE_UPDATES = 1; 

Desactivar el “Modo de actualización segura” para siempre

Mysql workbench 8.0:

 MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates" 

enter image description here La versión anterior puede:

 MySQL Workbench => [Edit] => [Preferences] => [SQL Queries] 

Dado que la pregunta fue respondida y no tiene nada que ver con actualizaciones seguras, este podría ser el lugar equivocado; Publicaré solo para agregar información.

Intenté ser un buen ciudadano y modifiqué la consulta para usar una tabla temporal de identificadores que se actualizarían:

 create temporary table ids ( id int ) select id from prime_table where condition = true; update prime_table set field1 = '' where id in (select id from ids); 

Fracaso. Modificó la actualización a:

 update prime_table set field 1 = '' where id <> 0 and id in (select id from ids); 

Eso funciono. Bueno, bueno, si siempre estoy agregando donde la clave <> 0 para evitar la verificación de actualización segura, o incluso establecer SQL_SAFE_UPDATE = 0, entonces he perdido la ‘verificación’ en mi consulta. También podría desactivar la opción de forma permanente. Supongo que hace que borrar y actualizar un proceso de dos pasos en lugar de uno … pero si escribes lo suficientemente rápido y dejas de pensar que la clave es especial, sino más bien como una molestia …

Es cierto que esto no tiene sentido para la mayoría de los ejemplos. Pero finalmente, llegué a la siguiente statement y funciona bien:

 update tablename set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz'); 

Esto es para Mac, pero debe ser el mismo para otros sistemas operativos, excepto la ubicación de las preferencias.

El error que obtenemos cuando probamos una operación DELETE insegura

Haga clic en preferencias cuando obtenga este error

En la nueva ventana, desmarque la opción Safe updates

Desmarque las actualizaciones seguras

Luego cierre y vuelva a abrir la conexión. No es necesario reiniciar el servicio.

Ahora vamos a probar DELETE nuevo con resultados exitosos.

enter image description here

Entonces, ¿qué es todo acerca de estas actualizaciones seguras? No es algo malo. Esto es lo que dice MySql al respecto.

Usando la opción --safe-updates

Para los principiantes, una opción de inicio útil es --safe-updates (o --i-am-a-dummy , que tiene el mismo efecto). Es útil para casos en los que podría haber emitido una statement DELETE FROM tbl_name , pero olvidó la cláusula WHERE . Normalmente, tal statement elimina todas las filas de la tabla. Con --safe-updates , puede eliminar filas solo especificando los valores clave que las identifican. Esto ayuda a prevenir accidentes.

Cuando utiliza la opción --safe-updates , mysql emite la siguiente statement cuando se conecta al servidor MySQL:

 SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000; 

Es seguro activar esta opción mientras maneja la base de datos de producción. De lo contrario, debe tener mucho cuidado de no borrar accidentalmente datos importantes.