web-dev-qa-db-fra.com

Code d'erreur MySQL: 1175 lors de 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 à partir de l'intérieur du workbench. J'écris la commande suivante:

UPDATE tablename SET columnname=1;

Cela me donne l'erreur suivante:

Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour une table sans WHERE qui utilise une colonne KEY. Pour désactiver le mode sans échec, activez/désactivez 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 en mesure de mettre à jour cette valeur. S'il vous plaît, dites-moi ce qui ne va pas?

698
Jury A

J'ai trouvé la réponse. Le problème était que je devais faire précéder le nom de la table avec le nom du schéma. c'est-à-dire que la commande devrait être:

UPDATE schemaname.tablename SET columnname=1;

Merci a tous.

18
Jury A

Il semble que votre session MySql ait le jeu option de mises à jour sûres . Cela signifie que vous ne pouvez pas mettre à jour ou supprimer des enregistrements sans spécifier de clé (ex. primary key) dans la clause where.

Essayer:

SET SQL_SAFE_UPDATES = 0;

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

1401
Habibillah

Suivez les étapes suivantes avant d'exécuter la commande UPDATE: In MySQL Workbench

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

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

414
Ripon Al Wasim
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
136
user2531028

Tout ce dont vous avez besoin est: démarrez une nouvelle requête et exécutez:

SET SQL_SAFE_UPDATES = 0;

Ensuite: Exécutez la requête que vous tentiez d'exécuter qui ne fonctionnait pas auparavant.

99
Quagmire12

Pas besoin de mettre SQL_SAFE_UPDATES à, je le découragerais vraiment de le faire de cette façon. SAFE_UPDATES est activé par défaut pour un REASON. Vous pouvez conduire une voiture sans ceintures de sécurité et autres choses si vous voyez ce que je veux dire;) Ajoutez simplement dans la clause WHERE une valeur KEY qui correspond à tout comme une clé primaire comparée à 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é que chaque enregistrement est (TOUJOURS) mis à jour comme vous le souhaitez.

82
Rudy De Volder

Code d'erreur: 1175. Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour une table sans WHERE qui utilise une colonne KEY. Pour désactiver le mode sans échec, basculez l'option dans Préférences -> Editeur SQL et reconnectez-vous.

Désactivez temporairement le "Mode de mise à jour sécurisée"

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

Désactive définitivement le "Mode de mise à jour sûre"

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]
55
Tính Ngô Quang
  1. Préférences ...
  2. "Mises à jour sûres" ...
  3. Redémarrer le serveur

Preferences...

Safe UpdatesRestart server

41
andrew
SET SQL_SAFE_UPDATES=0;

OR

Aller àEdit --> Preferences

CliquezSQL Queries onglet et décochezSafe Updates case à cocher

Query --> Reconnect to Server

Maintenant, exécutez votre requête SQL

34
Balu

Si vous êtes en mode sans échec, vous devez fournir l'id dans la clause where. Donc, quelque chose comme ça devrait marcher!

UPDATE tablename SET columnname=1 where id>0
26
Tomislav

Sur WorkBench, j'ai résolu le problème en désactivant le mode de mise à jour sûre:

-Edit-> Préférences-> Sql Editor puis décochez Safe update.

9
Abdelhadi Lahlou

La solution la plus simple consiste à définir la limite de lignes et à l'exécuter. Ceci est fait pour des raisons de sécurité.

8
Ruwantha

Étant donné que la question a reçu une réponse et qu'elle n'a rien à voir avec des mises à jour sûres, il se peut que ce soit 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'identifiants qui serait mise à 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. Modification de la mise à jour pour:

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 clé where <> 0 pour contourner la vérification de la mise à jour en toute sécurité, ou même pour définir SQL_SAFE_UPDATE = 0, alors j'ai perdu la "vérification" de ma requête. Je pourrais aussi bien désactiver l'option de manière permanente. Je suppose que cela supprime et met à jour un processus en deux étapes au lieu d’un .. mais si vous tapez assez vite et que vous arrêtez de penser à la clé qui est spéciale mais plutôt gênante ..

5
Gerard ONeill

C'est vrai, cela ne sert à rien 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');
4
Sonic-Mayhem

Ceci est pour Mac, mais doit être identique pour les autres systèmes d'exploitation, à l'exception de l'emplacement des préférences.

L'erreur que nous obtenons lorsque nous essayons une opération non sécurisée DELETE

Click on preferences when you get this error

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

Uncheck the safe updates

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

Nous allons maintenant essayer à nouveau la DELETE avec des résultats positifs.

enter image description here

Alors, qu'est-ce qui se passe avec ces mises à jour sûres? Ce n'est pas une mauvaise chose. C'est ce que MySql en dit.

Utilisation de l'option --safe-updates

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 dans les cas où vous avez peut-être émis une instruction DELETE FROM tbl_name mais que vous avez oublié la clause WHERE. Normalement, une telle instruction supprime toutes les lignes de la table. Avec --safe-updates, vous pouvez supprimer des lignes uniquement en spécifiant les valeurs de clé qui les identifient. Cela aide à prévenir les accidents.

Lorsque vous utilisez l'option --safe-updates, mysql émet l'instruction suivante lors de la connexion au serveur MySQL:

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

Activez cette option en toute sécurité lorsque vous traitez avec une base de données de production. Sinon, vous devez faire très attention à ne pas supprimer accidentellement des données importantes.

2
Krishnadas PC
SET SQL_SAFE_UPDATES = 0;

votre code SQL ici

SET SQL_SAFE_UPDATES = 1;