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?
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
).
suivre les étapes suivantes avant d'exécuter la commande UPDATE: Dans MySQL Workbench
- Aller à
Edit
-->Preferences
- , Cliquez sur
"SQL Editor"
et l'ongletuncheck
"Coffre-fort" Mises à jourcheck box
-
Query
-->Reconnect to Server
// se déconnecter puis se connecter - exécutez maintenant votre requête SQL
p. S., Pas besoin de redémarrer le démon MySQL!
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
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.
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.
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
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
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.
dans la version 6.2 de MySQL Workbech ne sort pas des options de préférence SQLQueries
.
SET SQL_SAFE_UPDATES=0;
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"
MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
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é.
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..
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');
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
sur la nouvelle fenêtre, décochez l'option 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.
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 unDELETE FROM tbl_name
déclaration, mais oublié la clauseWHERE
. 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.