Skip to main content

Upgrade-Probleme

Quelle: https://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_sql-mode

Lösung

Wenn auf eine Version nach 5.7.5 aktualisiert wird, so ändert sich der Default-Value für sql_mode. In der älteren Versionen war der Wert ONLY_FULL_GROUP_BY nicht gesetzt, sodass SQLs ohne vollständiges Column-Select im Grouping funktioniert hat. Nachdem die Default-Setting angepasst wurde, wird eine Exception geworfen.

Beispiel vor 5.7.5

SELECT * FROM [table] GROUP BY spalte1, spalte2;

Beispiel nach 5.7.5

SELECT spalte1, spalte2 FROM [table] GROUP BY spalte1, spalte2;

Korrektur

Um dieses Problem zu umgehen, kann in den Konfigurations-Dateien sql_mode angepasst werden.

Default

sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Default Korrektur

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Konfigurations-Datei
root:/etc/mysql/mysql.conf.d# ll
insgesamt 16
drwxr-xr-x 2 root root 4096 Jun 13 11:44 ./
drwxr-xr-x 4 root root 4096 Jun 13 11:42 ../
-rw-r--r-- 1 root root 3391 Jun 13 11:44 mysqld.cnf
-rw-r--r-- 1 root root   21 Jul 11  2016 mysqld_safe_syslog.cnf
 
root:/etc/mysql/mysql.conf.d# tail mysqld.cnf
...
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
tmp_table_size = 25M
max_heap_table_size = 25M
innodb_buffer_pool_size = 5G
lower_case_table_names = 2
 
# Grouping Korrektur
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION