Code d'erreur MySQL: 1175 pendant la mise à jour dans MySQL Workbench

j'essaie de mettre à jour la colonne visited pour lui donner la valeur 1. J'utilise MySQL workbench, et j'écris la déclaration dans L'éditeur SQL de L'intérieur de L'établi. J'écris la commande suivante:

UPDATE tablename SET columnname=1;

il me donne l'erreur suivante:

vous utilisez le mode de mise à jour sûr et vous avez essayé de mettre à jour une table sans a Où qui utilise une colonne de touche pour désactiver le mode de sécurité, basculer l'option ....

j'ai suivi les instructions, et j'ai décoché l'option safe update du menu Edit puis Preferences puis SQL Editor . La même erreur apparaît toujours et je ne suis pas capable de mettre à jour cette valeur. S'il vous plaît, dites-moi quel est le problème?

549
demandé sur Leigh 2012-07-12 12:44:39

15 réponses

il semble que votre session MySql dispose de l'option safe-updates . Cela signifie que vous ne pouvez pas mettre à jour ou supprimer des enregistrements sans spécifier une clé (ex. primary key ) dans la clause where.

, Essayez:

SET SQL_SAFE_UPDATES = 0;

ou vous pouvez modifier votre requête pour suivre la règle (utilisez primary key dans where clause ).

1142
répondu Habibillah 2015-03-25 19:10:51

suivre les étapes suivantes avant d'exécuter la commande UPDATE: Dans MySQL Workbench

  1. Aller à Edit --> Preferences
  2. , Cliquez sur "SQL Editor" et l'onglet uncheck "Coffre-fort" Mises à jour check box
  3. Query --> Reconnect to Server // se déconnecter puis se connecter
  4. exécutez maintenant votre requête SQL

p. S., Pas besoin de redémarrer le démon MySQL!

351
répondu Ripon Al Wasim 2018-04-05 09:49:51
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
109
répondu user2531028 2015-03-05 06:27:14

il suffit de lancer une nouvelle requête et d'exécuter:

SET SQL_SAFE_UPDATES = 0;

puis: lancez la requête que vous essayiez d'exécuter qui ne fonctionnait pas auparavant.

94
répondu Quagmire12 2016-12-08 06:37:46

pas besoin de mettre SQL_SAFE_UPDATES à 0 , je le découragerais vraiment de le faire de cette façon. Il suffit d'ajouter dans la clause où une valeur de clé qui correspond à tout comme une clé primaire comparant à 0, donc au lieu d'écrire:

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.

Maintenant, vous pouvez être assurés que chaque enregistrement est mis à jour comme vous l'attendez.

43
répondu Rudy De Volder 2015-02-04 08:23:26
  1. Préférences...
  2. Sûr "Mises À Jour"...
  3. redémarrer le serveur

Preferences...

Safe Updates Restart server

38
répondu andrew 2016-02-19 17:37:45
SET SQL_SAFE_UPDATES=0;

ou

passer à Edit --> Preferences

, Cliquez sur SQL Queries et l'onglet décocher la case Safe Updates case à cocher

Query --> Reconnect to Server

exécutez maintenant votre requête sql

33
répondu Balu 2014-02-04 11:16:38

si vous êtes en mode de sécurité, vous devez fournir une id dans la clause where. Donc quelque chose comme ça devrait marcher!

UPDATE tablename SET columnname=1 where id>0
23
répondu Tomislav 2015-09-11 09:32:40

j'ai trouvé la réponse. Le problème est que je dois précéder le nom de la table avec le nom du schéma. I. e, la commande devrait être:

UPDATE schemaname.tablename SET columnname=1;

merci à tous.

20
répondu Jury A 2013-07-25 05:49:02

dans la version 6.2 de MySQL Workbech ne sort pas des options de préférence SQLQueries .

Dans ce cas, il est possible d'utiliser: SET SQL_SAFE_UPDATES=0;
13
répondu ferdiado 2014-09-10 19:55:49

Code D'Erreur: 1175. Vous utilisez le mode de mise à jour de sécurité et vous avez essayé de mettre à jour une table sans Où qui utilise une colonne de touche pour désactiver le mode de sécurité, basculer l'option dans les préférences -> éditeur SQL et reconnecter.

DÉSACTIVER "Safe Mode de mise à Jour" temporaire

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

DÉSACTIVER "Safe Mode de mise à Jour" pour toujours

Mysql workbench 8.0:

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

enter image description here Ancienne version peut:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
10
répondu TinhNQ 2018-07-31 09:35:18

la solution la plus simple est de définir la limite de ligne et d'exécuter. Ceci est fait pour des raisons de sécurité.

8
répondu Ruwantha 2015-10-30 08:55:34

puisque la question a été répondue et n'avait rien à voir avec des mises à jour sécuritaires, cela pourrait être le mauvais endroit; je posterai juste pour ajouter des informations.

j'ai essayé d'être un bon citoyen et j'ai modifié la requête pour utiliser une table temporaire d'ids qui seraient mis à jour:

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);

échec. Modifié la mise à jour en:

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

ça a marché. Bon sang -- si j'ajoute toujours la touche <> 0 pour contourner la mise à jour sécurisée Vérifiez, ou même mettez SQL_SAFE_UPDATE=0, alors j'ai perdu la 'vérification' de ma requête. Autant désactiver l'option définitivement. Je suppose que cela rend la suppression et la mise à jour d'un processus en deux étapes au lieu d'un.. mais si vous tapez assez vite et arrêtez de penser que la clé est spéciale mais plutôt comme une nuisance..

3
répondu Gerard ONeill 2015-04-20 15:04:35

c'est Vrai, c'est inutile pour la plupart des exemples. Mais finalement, je suis arrivé à la déclaration suivante et cela fonctionne bien:

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
3
répondu Sonic-Mayhem 2015-10-10 11:20:59

Ceci est pour Mac, mais doit être le même pour les autres OS sauf l'emplacement des préférences.

L'erreur que nous obtenons quand nous essayons un dangereux DELETE opération

Click on preferences when you get this error

sur la nouvelle fenêtre, décochez l'option Safe updates

Uncheck the safe updates

alors fermez et rouvrez la connexion. Pas besoin de redémarrer le service.

maintenant, nous allons essayer le DELETE encore une fois avec des résultats positifs.

enter image description here

alors qu'est-ce que tout au sujet de ces mises à jour sécuritaires? C'est pas une mauvaise chose. C'est ce que MySql est dit à ce sujet.

utilisant la --safe-updates Option

pour les débutants, une option de démarrage utile est --safe-updates (ou --i-am-a-dummy , qui a le même effet). Il est utile pour les cas où vous pourriez avoir émis un DELETE FROM tbl_name déclaration, mais oublié la clause WHERE . Normalement, une telle déclaration supprime tous les lignes de la table. Avec --safe-updates , vous pouvez supprimer des lignes seulement par spécifier les valeurs clés qui les identifient. Cela permet de prévenir accident.

Lorsque vous utilisez le --safe-updates option, mysql émet le suivant déclaration lors de la connexion au serveur MySQL:

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

il est sûr d'activer cette option pendant que vous traitez avec la base de données de production. Sinon, vous devez faire très attention à ne pas supprimer accidentellement des données importantes.

0
répondu Krishnadas PC 2018-07-05 07:22:01