Ich versuche, die Spalte so zu aktualisieren visited
, dass sie den Wert 1 erhält. Ich verwende die MySQL-Workbench und schreibe die Anweisung im SQL-Editor aus der Workbench heraus. Ich schreibe den folgenden Befehl:
UPDATE tablename SET columnname=1;
Es gibt mir den folgenden Fehler:
Sie verwenden den sicheren Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, das eine KEY-Spalte verwendet. Um den abgesicherten Modus zu deaktivieren, schalten Sie die Option um.
Ich habe die Anweisungen befolgt und dann die safe update
Option aus dem Edit
Menü Preferences
deaktiviert SQL Editor
. Der gleiche Fehler wird weiterhin angezeigt und ich kann diesen Wert nicht aktualisieren. Bitte sag mir, was los ist.
mysql
sql-update
mysql-workbench
Jury A.
quelle
quelle
Antworten:
Es sieht so aus, als ob für Ihre MySQL-Sitzung die Option für sichere Updates festgelegt ist. Dies bedeutet, dass Sie Datensätze nicht aktualisieren oder löschen können, ohne einen Schlüssel (z. B.
primary key
) in der where-Klausel anzugeben .Versuchen:
Oder Sie können Ihre Abfrage so ändern, dass sie der Regel folgt (Verwendung
primary key
inwhere clause
).quelle
SET SQL_SAFE_UPDATES = 1
dass Sie dies zurücksetzen, wenn Sie fertig sind, da dies eine lohnende Sicherheitsfunktion ist.Führen Sie die folgenden Schritte aus, bevor Sie den Befehl UPDATE ausführen: In MySQL Workbench
Edit
->Preferences
"SQL Editor"
Registerkarte und aufuncheck
"Sichere Updates".check box
Query
->Reconnect to Server
// abmelden und dann anmeldenps, der MySQL-Daemon muss nicht neu gestartet werden!
quelle
"Sql Editor"
anstelle von sein"Sql Queries"
und dann gibt es unten ein Kontrollkästchen für"Safe Updates"
quelle
Sie müssen SQL_SAFE_UPDATES nicht auf 0 setzen , ich würde wirklich davon abraten , dies so zu tun. SAFE_UPDATES ist aus GRÜNDEN standardmäßig aktiviert. Sie können ein Auto ohne Sicherheitsgurte und andere Dinge fahren, wenn Sie wissen, was ich meine;) Fügen Sie einfach in die WHERE-Klausel einen KEY-Wert ein, der mit allem übereinstimmt, wie ein Primärschlüssel im Vergleich zu 0, also anstatt zu schreiben:
Jetzt können Sie sicher sein, dass jeder Datensatz (IMMER) wie erwartet aktualisiert wird.
quelle
WHERE id > 0
als Trick in dieser Richtung verwendet.Sie benötigen lediglich: Starten Sie eine neue Abfrage und führen Sie Folgendes aus:
Dann: Führen Sie die Abfrage aus, die Sie ausführen wollten und die zuvor nicht funktionierte.
quelle
SET SQL_SAFE_UPDATES = 0;
Ihr Code SQL hier
SET SQL_SAFE_UPDATES = 1;
quelle
Fehlercode: 1175. Sie verwenden den sicheren Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet. Um den abgesicherten Modus zu deaktivieren, schalten Sie die Option unter Einstellungen -> SQL Editor um und stellen Sie die Verbindung wieder her.
Schalten Sie "Safe Update Mode" vorübergehend aus
Schalten Sie "Safe Update Mode" für immer aus
MySQL Workbench 8.0:
Alte Version kann:
quelle
quelle
ODER
Gehe zu
Edit --> Preferences
Klicken Sie auf die
SQL Queries
Registerkarte und deaktivieren Sie dasSafe Updates
KontrollkästchenQuery --> Reconnect to Server
Führen Sie nun Ihre SQL-Abfrage aus
quelle
Wenn Sie sich in einem abgesicherten Modus befinden, müssen Sie in der where-Klausel eine ID angeben. So etwas sollte funktionieren!
quelle
Auf WorkBench habe ich es behoben, indem ich den sicheren Aktualisierungsmodus deaktiviert habe:
-Bearbeiten -> Einstellungen -> SQL-Editor und deaktivieren Sie dann Sicheres Update.
quelle
Ich habe die Antwort gefunden. Das Problem war, dass ich dem Tabellennamen den Schemanamen voranstellen muss. dh der Befehl sollte sein:
Vielen Dank an alle.
quelle
qms-active-db
.gh_table set bookmark = '1660_207100000001000'In MySQL Workbech Version 6.2 wird die Voreinstellung nicht beendet
In diesem Fall ist es möglich:SQLQueries
.SET SQL_SAFE_UPDATES=0;
quelle
Die einfachste Lösung besteht darin, das Zeilenlimit zu definieren und auszuführen. Dies geschieht aus Sicherheitsgründen.
quelle
Da die Frage beantwortet wurde und nichts mit sicheren Updates zu tun hat, ist dies möglicherweise der falsche Ort. Ich werde nur posten, um Informationen hinzuzufügen.
Ich habe versucht, ein guter Bürger zu sein, und die Abfrage so geändert, dass eine temporäre Tabelle mit IDs verwendet wird, die aktualisiert werden:
Fehler. Das Update wurde geändert in:
Das hat funktioniert. Nun gut - wenn ich immer den Schlüssel <> 0 hinzufüge, um die sichere Aktualisierungsprüfung zu umgehen, oder sogar SQL_SAFE_UPDATE = 0 setze, habe ich die Prüfung in meiner Abfrage verloren. Ich könnte die Option genauso gut dauerhaft deaktivieren. Ich nehme an, es löscht und aktualisiert einen zweistufigen Prozess anstelle von einem. Wenn Sie jedoch schnell genug tippen und nicht mehr daran denken, dass der Schlüssel etwas Besonderes ist, sondern nur ein Ärgernis.
quelle
Dies ist zwar für die meisten Beispiele sinnlos. Aber schließlich bin ich zu folgender Aussage gekommen und es funktioniert gut:
quelle
Dies gilt für Mac, muss jedoch für andere Betriebssysteme mit Ausnahme des Speicherorts der Einstellungen identisch sein.
Der Fehler, den wir erhalten, wenn wir einen unsicheren
DELETE
Vorgang versuchenDeaktivieren Sie im neuen Fenster die Option
Safe updates
Schließen Sie dann die Verbindung und öffnen Sie sie erneut. Der Dienst muss nicht neu gestartet werden.
Jetzt werden wir es
DELETE
mit erfolgreichen Ergebnissen erneut versuchen .Worum geht es also bei diesen sicheren Updates? Es ist keine böse Sache. Dies ist, was MySql darüber sagt.
Verwenden der
--safe-updates
OptionEs ist sicher, diese Option zu aktivieren, während Sie mit der Produktionsdatenbank arbeiten. Andernfalls müssen Sie sehr vorsichtig sein, um wichtige Daten nicht versehentlich zu löschen.
quelle