Vorwort Im Falle eines Anwendungsfehlers oder einer Fehlbedienung des DBA kann die gesamte Tabelle aktualisiert werden: Update/Löschen. MySQL bietet sql_safe_updates, um diesen Vorgang einzuschränken. setze sql_safe_updates = 1; Nach dem Festlegen wird die SQL-Ausführung ohne Where-Bedingungen beim Aktualisieren und Löschen eingeschränkt, was strenger ist. Dies wird sich negativ auf die bestehende Online-Umgebung auswirken. Durch strenge Prüfungen neuer Systeme und Anwendungen kann sichergestellt werden, dass keine vollständigen Tabellenaktualisierungen erfolgen. Tabelle erstellen: working.test01 (ID INT NICHT NULL AUTO_INCREMENT, NAME VARCHAR (20), Alter INT, gmt_created DATETIME, PRIMARY KEY (ID)); einfügen in test01(Name, Alter, gmt_created) Werte('xiaowang', 2, jetzt()); einfügen in test01(Name, Alter, gmt_created) Werte('huahua', 5, jetzt()); einfügen in test01(Name, Alter, gmt_created) Werte('gougou', 9, jetzt()); einfügen in test01(Name, Alter, gmt_created) Werte('heihei', 12, jetzt()); einfügen in test01(Name, Alter, gmt_created) Werte('baibai', 134, jetzt()); # Kein Index-Update im Filterfeld Aktualisiere Test01, setze Name = „xiaoxiao“, wobei Alter = 2; FEHLER 1175 (HY000): Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet # Aktualisieren Sie die gesamte Tabelle. Update Test01. Setname = „xiaoxiao“; FEHLER 1175 (HY000): Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet # Limit-Update hinzufügen, Update test01, Name festlegen = „xia“, Limit 1; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0 # Einen neuen Index erstellen create index idx_age on test01(age); Aktualisiere Test01, setze Namen = „xiaoxiao“, wobei Alter = 2; Abfrage OK, 1 Zeile betroffen (0,01 Sek.) Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0 Update Test01, Name festlegen = „hhh“, wobei Alter = 9, Limit 10; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0 Tabelle test01 ändern, Index idx_age löschen; Erstelle den Index idx_age_name für test01(Alter, Name); Aktualisiere Test01, setze Alter = 100, wobei Name = „hhh“; FEHLER 1175 (HY000): Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet Aktualisiere Test01, setze Alter = 100, wobei Name = „hhh“, Limit 10; Abfrage OK, 1 Zeile betroffen (0,00 Sek.) Übereinstimmende Zeilen: 1 Geändert: 1 Warnungen: 0 Wenn beim Aktualisieren keine Where-Bedingung vorhanden ist oder die Where-Bedingung kein Indexfeld ist, muss daher limit verwendet werden; wenn eine Where-Bedingung vorhanden ist, muss das Indexfeld Kürzlich habe ich bei der Arbeit ein weiteres Problem festgestellt. MySQL sql_safe_updates unterstützt keine Unterabfrage-Updates. Da Entwickler Daten manchmal versehentlich aktualisieren, müssen die MySQL-Instanzen der Online-Datenbank sql_safe_updates=1 festlegen, um Aktualisierungen und Löschungen ohne Indizes zu vermeiden. Als Ergebnis stellte der Entwickler eines Tages fest, dass das folgende SQL nicht korrekt ausgeführt werden konnte: Aktualisiere t1, setze col2=1, wobei key1 in (wähle col2 aus t2, wobei key2='ABcD'); Der Fehler lautet wie folgt: FEHLER 1175 (HY000): Sie verwenden den abgesicherten Aktualisierungsmodus und haben versucht, eine Tabelle ohne WHERE zu aktualisieren, die eine KEY-Spalte verwendet Mit anderen Worten: Es ist nicht möglich, die Where-Bedingung zu aktualisieren, wenn sie nicht indiziert ist. Nach einiger Suche stellte ich fest, dass dies tatsächlich nicht möglich ist. Auch wenn key1 und key2 die Indizes von t1 bzw. t2 sind, [kann ich sie nicht in Primärschlüssel ändern]. Beschreibung: Unterabfrage-Updates werden nicht unterstützt. Ich habe gegoogelt und herausgefunden, dass jemand anderes diese Frage schon einmal gestellt hat. . http://stackoverflow.com/questions/24314830/query-not-getting-executed-if-supplied-a-nested-sub-query Endgültige Lösung: 1) Ändern Sie die Parameter auf Sitzungsebene: 2) Programmverarbeitung: Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: So implementieren Sie das Strategiemuster in Javascript
>>: Eine vollständige Anleitung zur Konfiguration von Linux-Umgebungsvariablen
Als Pflichtkurs für Frontend-Entwickler kann CSS3...
Beachten! ! ! Wählen Sie * vom Benutzer, wobei di...
Dieser Artikel zeichnet das ausführliche Tutorial...
Inhaltsverzeichnis 1. Grundlegendes Verständnis v...
Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...
Vorwort Ab MySQL 5.7.11 unterstützt MySQL die Dat...
Inhaltsverzeichnis dva Verwendung von dva Impleme...
Inhaltsverzeichnis Registrieren von Komponenten K...
Inhaltsverzeichnis 1. Geben Sie unterschiedliche ...
Vorwort Ich glaube, dass jeder auf einem Remote-S...
Als ich Docker zum ersten Mal verwendete, habe ic...
Inhaltsverzeichnis Voraussetzungen Einrichten ein...
Heute werde ich einen Quellcode mit Ihnen teilen,...
Inhaltsverzeichnis Import auf Anfrage: Globaler I...
Vorwort Histogramme sind grundlegende statistisch...