Hier sind einige Probleme, die bei der Verwendung von MySQL auftreten, und die entsprechenden Lösungen. sql_mode=only_full_group_by verursacht einen Gruppieren-nach-Abfragefehler Frage #1 - Der Ausdruck der SELECT-Liste befindet sich nicht in der GROUP BY-Klausel und enthält eine nicht aggregierte Spalte. Dies ist nicht kompatibel mit sql_mode=only_full_group_by Lösung # Stellen Sie den richtigen SQL-Modus ein, um das Problem zu lösen. # Melden Sie sich bei MySQL an. sudo mysql -hlocalhost -uroot -p123123 SETZEN SIE GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); Sie können auch die MySQL-Konfigurationsdatei ändern und den MySQL-Dienst neu starten # Öffnen Sie die MySQL-Konfigurationsdatei sudo vim /etc/mysql/conf.d/mysql.cnf # Fügen Sie unten den folgenden Satz hinzu sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # Starten Sie dann sudo service mysql restart neu Detaillierte Erklärung ONLY_FULL_GROUP_BY: Bei GROUP BY-Aggregationsvorgängen ist dieses SQL ungültig, wenn die Spalte in SELECT nicht in GROUP BY erscheint, da die Spalte nicht in der GROUP BY-Klausel enthalten ist. Tabellendaten löschen Problem: Bei der Durchführung einer Datenmigration oder Datenreparatur ist es häufig erforderlich, die Datentabelle zu löschen oder zurückzusetzen. Lösung Mit dem Befehl TRUNCATE TABLE table_name können Sie die Datentabelle zurücksetzen. Der Sinn dieses Befehls besteht darin, die Tabelle zu löschen und dann neu aufzubauen. Bei Tabellen mit Constraints funktioniert dies nicht. Sie müssen zuerst die Fremdschlüssel-Constraints deaktivieren und dann den Löschvorgang durchführen. # Die erste LösungSELECT @@FOREIGN_KEY_CHECKS; # Den Befehl zur Einzelsignatur-Fremdschlüsseleinschränkung anzeigenSET FOREIGN_KEY_CHECKS=0; # Zuerst die Fremdschlüsseleinschränkung deaktivierenTRUNCATE TABLE table_name; # Anschließend die Tabelle zurücksetzen# Die zweite Lösung wird empfohlenDELETE FROM table_name; # Löschbefehl ohne Where-Bedingung zum Löschen aller DatenALTER TABLE table_name AUTO_INCREMENT=1; # Den Anfangswert des Inkrements zurücksetzen MySQL benötigt zu viel Speicher Wenn der Serverspeicher nur 1 GB oder weniger beträgt, müssen Sie die Standardkonfiguration von MySQL ändern. Andernfalls werden Sie feststellen, dass Ihr MySQL problemlos 400 MB oder sogar 800 MB Speicher belegt. Durch die Optimierung der MySQL-Konfiguration kann der Zweck der Reduzierung des Speicherverbrauchs erreicht werden. Die Konfigurationsdatei befindet sich im Allgemeinen unter [[mysqld]] in vim /etc/my.cnf. Detaillierte Informationen zu MySQL-Konfigurationselementen finden Sie auf der offiziellen Website: Detaillierte Konfigurationselemente auf der offiziellen MySQL-Website. Der Server, den ich jetzt verwende, hat eine Single-Core-CPU und 1 GB Arbeitsspeicher. # Die maximale Anzahl instrumentierter Tabellenobjekte. Die maximale Anzahl geladener Tabelleninstanzen, Standard -1 adaptive performance_schema_max_table_instances = 600 # Die Anzahl der Tabellendefinitionen, die im Definitionscache gespeichert werden können, Standard -1 adaptive table_definition_cache = 400 # Die Anzahl der offenen Tabellen für alle Threads. Die maximale Anzahl von Tabellen, die von allen Threads geöffnet werden können, der Standardwert ist 2000 table_open_cache = 128 # Die Cachegröße der InnoDB-Engine. Wenn der Start fehlschlägt, reduzieren Sie innodb_buffer_pool_size = 600M # Die Puffergröße, die für gemeinsame Abfragevorgänge verwendet werden kann, Thread-exklusiv join_buffer_size = 8M Starten Sie den MySQL-Dienst nach der Änderung der Konfiguration neu, damit die Konfigurationselemente wirksam werden. Sie können die aktuellen MySQL-Konfigurationsinformationen auf folgende Arten anzeigen: # Melden Sie sich bei MySQL an mysql -hlocalhost -uroot -ppassword # Alle globalen Konfigurationen anzeigen, globale Variablen anzeigen; # Den globalen Konfigurationsstatus anzeigen. Globale Status anzeigen. # Bestimmte Konfigurationselemente filtern. Um die Konfigurationselemente herauszufiltern, die mit „innodb“ beginnen, zeigen Sie folgende globale Variablen wie „innodb%“ an. Temporäre MySQL-Tabellen müssen Aliase haben Für durch Abfragen generierte temporäre Tabellen müssen Sie „as“ verwenden, um einen Alias zu definieren, auch wenn dieser später nicht verwendet wird. Andernfalls wird ein Fehler gemeldet: Jede abgeleitete Tabelle muss einen eigenen Alias haben. MySQL: Tabellenspaltennamen abrufen Angenommen, der Tabellenname lautet table_name. Mit den folgenden drei Befehlen können Sie die Spaltennamen der Tabelle abfragen. DESC Tabellenname; DESCRIBE Tabellenname; Spalten von Personen anzeigen; Das könnte Sie auch interessieren:
|
<<: JavaScript-Entwurfsmuster – Muster der Verantwortungskette
>>: Eine einfache Methode zum Implementieren der zeitgesteuerten Protokolllöschung unter Linux
1.html Teil Code kopieren Der Code lautet wie folg...
Vorwort Ich möchte Ihnen zeigen, wie Sie ein Such...
Wenn Sie kein Linux-System haben, finden Sie unte...
Zu den vom HTTP/1.1-Protokoll angegebenen HTTP-An...
Vorwort Als ich heute eine selbstgeschriebene Kom...
In den letzten Tagen war der Zugriff auf die Webs...
Das JD-Karussell wurde mit reinem HTML und CSS im...
Physische Struktur eines InnoDB-Index Alle InnoDB...
1. Suchen Sie das MySQL-Image Docker PS 2. Geben ...
Inhaltsverzeichnis 1. Konventionelle Ideen zur Ze...
Derzeit tritt ein solches Problem auf Bei mir war...
Viele Webseiten haben kleine Dreiecke in ihren Na...
Öffnen Sie DREAMWEAVER und erstellen Sie ein neue...
0. Vorbereitende Maßnahmen Deaktivieren Sie den s...
Inhaltsverzeichnis Überblick Promise Race Methode...