it-swarm.com.de

MySQL-Fehlercode: 1175 beim UPDATE in MySQL Workbench

Ich versuche, die Spalte visited zu aktualisieren, um den Wert 1 zu erhalten. Ich verwende die MySQL-Workbench und schreibe die Anweisung im SQL-Editor innerhalb der Workbench. Ich schreibe den folgenden Befehl:

UPDATE tablename SET columnname=1;

Es gibt mir den folgenden Fehler:

Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne ein WHERE zu aktualisieren, das eine KEY-Spalte verwendet. Um den abgesicherten Modus zu deaktivieren, aktivieren Sie die Option ....

Ich befolgte die Anweisungen und deaktivierte die Option safe update im Menü Edit, dann Preferences und dann SQL Editor. Der gleiche Fehler tritt immer noch auf und ich kann diesen Wert nicht aktualisieren. Bitte, sag mir, was ist los?

698
Jury A

Ich habe die Antwort gefunden. Das Problem war, dass ich dem Tabellennamen den Schemanamen voranstellen musste. der Befehl sollte sein:

UPDATE schemaname.tablename SET columnname=1;

Vielen Dank an alle.

18
Jury A

Es sieht so aus, als ob in Ihrer MySQL-Sitzung Option für sichere Updates gesetzt 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:

SET SQL_SAFE_UPDATES = 0;

Oder Sie können Ihre Abfrage so ändern, dass sie der Regel folgt (verwenden Sie primary key in where clause).

1401
Habibillah

Befolgen Sie die folgenden Schritte, bevor Sie den Befehl UPDATE ausführen: In MySQL Workbench

  1. Gehe zu Edit -> Preferences
  2. Klicken Sie auf die Registerkarte "SQL Editor" und uncheck "Sichere Updates" check box
  3. Query -> Reconnect to Server // ausloggen und dann einloggen
  4. Führen Sie nun Ihre SQL-Abfrage aus

S., Sie müssen den MySQL-Daemon nicht neu starten!

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

Alles, was benötigt wird, ist: Starten Sie eine neue Abfrage und führen Sie Folgendes aus:

SET SQL_SAFE_UPDATES = 0;

Dann: Führen Sie die Abfrage aus, die Sie ausgeführt haben und die zuvor nicht funktioniert hat.

99
Quagmire12

Keine Notwendigkeit, SQL_SAFE_UPDATES auf 0 zu setzen, ich würde wirklich davon abraten, es so zu machen. SAFE_UPDATES ist aus einem GRUND 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 wie ein Primärschlüssel mit 0 übereinstimmt, anstatt zu schreiben:

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.

Jetzt können Sie sicher sein, dass jeder Datensatz (IMMER) wie erwartet aktualisiert wird.

82
Rudy De Volder

Fehlercode: 1175. Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet. Um den abgesicherten Modus zu deaktivieren, aktivieren Sie die Option in den Einstellungen -> SQL Editor und stellen die Verbindung wieder her.

"Safe Update Mode" vorübergehend ausschalten

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

"Safe Update Mode" für immer ausschalten

MySQL Workbench 8.0:

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

enter image description here Alte Version kann:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
55
  1. Einstellungen ...
  2. "Sichere Updates" ...
  3. Starten Sie den Server neu

Preferences...

Safe UpdatesRestart server

41
andrew
SET SQL_SAFE_UPDATES=0;

OR

Gehe zEdit --> Preferences

KlickenSQL Queries und DeaktivierenSafe Updates Kontrollkästchen

Query --> Reconnect to Server

Führen Sie nun Ihre SQL-Abfrage aus

34
Balu

Wenn Sie sich in einem abgesicherten Modus befinden, müssen Sie id in der where-Klausel angeben. So etwas sollte funktionieren!

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

Auf WorkBench habe ich es gelöst, indem ich den abgesicherten Update-Modus deaktivierte:

-Edit -> Preferences -> Sql Editor dann deaktivieren Sie Safe Update.

9

Die einfachste Lösung besteht darin, das Zeilenlimit zu definieren und auszuführen. Dies geschieht aus Sicherheitsgründen.

8
Ruwantha

Da die Frage beantwortet wurde und nichts mit sicheren Updates zu tun hatte, 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 wird:

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

Fehler. Das Update wurde folgendermaßen geändert:

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

Das hat funktioniert. Nun gut - wenn ich immer den Where-Key <> 0 hinzufüge, um die Prüfung auf sichere Updates zu umgehen, oder sogar SQL_SAFE_UPDATE = 0 setze, dann habe ich die 'Prüfung' in meiner Abfrage verloren. Ich könnte genauso gut die Option dauerhaft deaktivieren. Ich nehme an, es macht das Löschen und Aktualisieren eines zweistufigen Prozesses anstelle eines einzigen. Aber wenn Sie schnell genug tippen und aufhören, darüber nachzudenken, dass der Schlüssel etwas Besonderes ist, sondern nur ein Ärgernis.

5
Gerard ONeill

Das ist für die meisten Beispiele zwar sinnlos. Aber zum Schluss bin ich zu folgender Aussage gekommen und sie funktioniert einwandfrei:

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
4
Sonic-Mayhem

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 eine unsichere DELETE -Operation versuchen

Click on preferences when you get this error

Deaktivieren Sie im neuen Fenster die Option Safe updates

Uncheck the safe updates

Schließen Sie dann die Verbindung und öffnen Sie sie erneut. Der Dienst muss nicht neu gestartet werden.

Jetzt werden wir DELETE erneut mit erfolgreichen Ergebnissen versuchen.

enter image description here

Worum geht es also bei diesen sicheren Updates? Es ist keine böse Sache. Das sagt MySql dazu.

Verwenden der --safe-updates -Option

Für Anfänger ist eine nützliche Startoption --safe-updates (oder --i-am-a-dummy, was den gleichen Effekt hat). Dies ist hilfreich in Fällen, in denen Sie möglicherweise eine DELETE FROM tbl_name -Anweisung ausgegeben, aber die WHERE -Klausel vergessen haben. Normalerweise löscht eine solche Anweisung alle Zeilen aus der Tabelle. Mit --safe-updates können Sie Zeilen nur löschen, indem Sie die Schlüsselwerte angeben, die sie identifizieren. Dies hilft, Unfälle zu vermeiden.

Wenn Sie die Option --safe-updates verwenden, gibt mysql die folgende Anweisung aus, wenn eine Verbindung zum MySQL-Server hergestellt wird:

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

Es ist sicher, diese Option zu aktivieren, während Sie mit der Produktionsdatenbank arbeiten. Andernfalls müssen Sie sehr vorsichtig sein, um nicht versehentlich wichtige Daten zu löschen.

2
Krishnadas PC
SET SQL_SAFE_UPDATES = 0;

ihren Code SQL hier

SET SQL_SAFE_UPDATES = 1;