Cara mematikan Strict SQL Mode pada MySQL
Ternyata MySQL itu masih sangat relevan. 😀 Saya baru tahu pada MySQL versi 5.7 itu ada Strict SQL Mode yang aktif secara default dan efeknya ada query yang tidak kompatibel. Walaupun tidak sampai hancur atau bermasalah besar dengan CMSnya, tapi ada beberapa fungsi yang tidak bekerja semestinya. Karena saya tidak diperbolehkan untuk migrasi ke MariaDB atau Percona ya cari solusi alternatifnya.
Dalam log saya temukan pesan kesalahan berikut:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'nama_db.nama_tbl' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Ya setidaknya ada sedikit detail masalahnya dimana. 😀
Nah… cara mengatasinya mengakalinya adalah dengan menonaktifkan Strict SQL Mode ini. Silahkan edit konfigurasi MySQL (my.ini
atau my.cnf
):
nano /etc/mysql/my.cnf
Kemudian cari baris kode berikut:
sql-mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
Kosongkan seperti ini:
sql-mode=""
Setelah itu restart MySQL.
service mysql restart
Atau alternatifnya bisa menambahkan satu file konfigurasi khusus:
nano /etc/mysql/conf.d/matikan_strict_mode.cnf
Isikan kode berikut:
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Dan jangan lupa restart proses database servernya.