J'essaie de mettre à jour la colonne visited
pour lui donner la valeur 1. J'utilise le plan de travail MySQL et j'écris l'instruction dans l'éditeur SQL depuis l'intérieur du plan de travail. 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, basculez l'option ....
J'ai suivi les instructions, et je décoché l' safe update
option dans le Edit
menu , puis Preferences
ensuite 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?
mysql
sql-update
mysql-workbench
Jury A
la source
la source
Réponses:
Il semble que votre session MySql dispose de l' option de mise à jour sécurisée . Cela signifie que vous ne pouvez pas mettre à jour ou supprimer des enregistrements sans spécifier de clé (par exemple
primary key
) dans la clause where.Essayer:
Ou vous pouvez modifier votre requête pour suivre la règle (utiliser
primary key
danswhere clause
).la source
SET SQL_SAFE_UPDATES = 1
lorsque vous avez terminé, car il s'agit d'une fonction de sécurité intéressante.Suivez les étapes suivantes avant d'exécuter la commande UPDATE: Dans MySQL Workbench
Edit
->Preferences
"SQL Editor"
onglet etuncheck
"Mises à jour sécurisées"check box
Query
->Reconnect to Server
// se déconnecter puis se connecterps, pas besoin de redémarrer le démon MySQL!
la source
"Sql Editor"
au lieu de"Sql Queries"
, puis il y a une case à cocher en bas pour"Safe Updates"
la source
Pas besoin de mettre SQL_SAFE_UPDATES à 0 , je le découragerais vraiment de le faire de cette façon. SAFE_UPDATES est activé par défaut pour une RAISON. Vous pouvez conduire une voiture sans ceintures de sécurité et autres choses si vous savez 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:
Maintenant, vous pouvez être assuré que chaque enregistrement est (TOUJOURS) mis à jour comme prévu.
la source
WHERE id > 0
comme astuce le long de cette ligne.Il suffit de: Lancer une nouvelle requête et exécuter:
Ensuite: exécutez la requête que vous tentiez d'exécuter qui ne fonctionnait pas auparavant.
la source
SET SQL_SAFE_UPDATES = 0;
votre code SQL ici
SET SQL_SAFE_UPDATES = 1;
la source
Code d'erreur: 1175. Vous utilisez le mode de mise à jour sécurisé 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 -> Éditeur SQL et reconnectez-vous.
Désactiver temporairement le "Mode de mise à jour sécurisé"
Désactivez le "Mode de mise à jour sécurisé" pour toujours
MySQL Workbench 8.0:
L'ancienne version peut:
la source
la source
OU
Aller à
Edit --> Preferences
Cliquez sur l'
SQL Queries
onglet et décochez laSafe Updates
caseQuery --> Reconnect to Server
Maintenant, exécutez votre requête SQL
la source
Si vous êtes en mode sans échec, vous devez fournir la clause id dans where. Donc, quelque chose comme ça devrait fonctionner!
la source
Sur WorkBench, je l'ai résolu en désactivant le mode de mise à jour sécurisé:
-Edit -> Préférences -> Sql Editor puis décochez la case Safe update.
la source
J'ai trouvé la réponse. Le problème était que je dois faire précéder le nom de la table du nom du schéma. c'est-à-dire que la commande doit être:
Merci a tous.
la source
qms-active-db
.gh_table set bookmark = '1660_207100000001000'Dans la version 6.2 de MySQL Workbech ne quitte pas la préférence
Dans ce cas, il est possible d'utiliser:SQLQueries
options de .SET SQL_SAFE_UPDATES=0;
la source
La solution la plus simple consiste à définir la limite de lignes et à exécuter. Ceci est fait pour des raisons de sécurité.
la source
Étant donné que la question a été répondue et n'a rien à voir avec des mises à jour sûres, ce n'est peut-être pas le bon 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'ID qui serait mise à jour:
Échec. Modification de la mise à jour pour:
Ça a marché. Eh bien, si j'ajoute toujours où la clé <> 0 pour contourner la vérification de mise à jour sécurisée, ou même 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 façon permanente. Je suppose que cela supprime et met à jour un processus en deux étapes au lieu d'une .. mais si vous tapez assez vite et arrêtez de penser que la clé est spéciale mais plutôt juste une nuisance
la source
Certes, cela est inutile pour la plupart des exemples. Mais finalement, je suis arrivé à la déclaration suivante et cela fonctionne bien:
la source
Ceci est pour Mac, mais doit être le même pour les autres systèmes d'exploitation, sauf l'emplacement des préférences.
L'erreur que nous obtenons lorsque nous essayons une
DELETE
opération dangereuseDans la nouvelle fenêtre, décochez l'option
Safe updates
Fermez puis rouvrez la connexion. Pas besoin de redémarrer le service.
Maintenant, nous allons réessayer
DELETE
avec des résultats réussis.Alors, qu'est-ce que c'est que ces mises à jour sécurisées? Ce n'est pas une mauvaise chose. C'est ce que MySql en dit.
Utilisation de l'
--safe-updates
optionIl 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.
la source