Ich habe einige Probleme mit den Änderungen der Group-By-Klausel in MySQL 5.7. Ich erhalte immer wieder eine Fehlermeldung, die besagt, dass ich einige Abfragen korrigieren muss, damit es richtig ausgeführt wird. Ich habe ein paar verschiedene Dinge ausprobiert, aber das einzige, was funktioniert, ist die Ausführung der folgenden Abfragen auf dem Server:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Dadurch werden die Fehler behoben und meine App kann ausgeführt werden.
Ich habe versucht hinzuzufügen:
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Dies führte jedoch /etc/mysql/my.cfg
zu einigen Problemen, da keine automatischen Inkrementnummern mehr generiert wurden und daher alle Einfügungen fehlschlugen.
Dies passiert mittlerweile auf mehreren Servern und es ist mühsam, weiterhin Abfragen auszuführen, wenn einer von ihnen neu gestartet wird.
Kann mir jemand helfen, dieses Problem zu lösen?
Antwort1
Um den SQL-Modus beim Serverstart festzulegen, verwenden Sie die
--sql-mode="modes"
Option in der Befehlszeile odersql-mode="modes"
in einer Optionsdatei wie my.cnf (Unix-Betriebssysteme) oder my.ini (Windows). „modes“ ist eine durch Kommas getrennte Liste verschiedener Modi. Um den SQL-Modus explizit zu löschen, setzen Sie ihn mit --sql-mode="" in der Befehlszeile oder sql-mode="" in einer Optionsdatei auf eine leere Zeichenfolge.
Fügen Sie die Anführungszeichen in Ihr ein my.cnf
.