Disable ONLY_FULL_GROUP_BY in MySQL
Notice Error diatas biasanya terjadi ketika Aplikasi yang sudah dibuat di local komputer kemudian di deploy ke Server Hosting akan muncul seperti itu, Kesalahan ini bukan dikarenakan Source Code kita yang salah tetapi ada settingan pada Variables MySQL yang sedikit disesuaikan yaitu tempatnya dibagian sql mode.
Ada banyak cara untuk mengatasi hal ini, dan jika hal ini terjadi di Shared Hosting. yang bisa kamu lakukan hanya menghubungi Penyedia Hosting. Berbeda halnya jika kamu Administrator System Tersebut kamu dapat mengikuti langkah-langkah berikut ini :
- Buka Menu PhpMyAdmin - Variables
Kemudian Cari sql mode maka akan kamu dapati perintah seperti berikut :
ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
Ubah Menjadi seperti ini :
NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTIONDengan Menghapus ONLY_FULL_GROUP_BY Maka masalah ini terselesaikan, tetapi jika ini terjadi didalam server kamu cara ini hanya bersifat Temporary Jadi agar hal ini bisa menjadi Permanent kamu bisa melakukan hal ini :
- Login Melalui Putty / Panel Terminal Server (WHM, CyberPanel Dll)
- Masukan Perintah Berikut
nano /etc/my.cnf
//Ubah dibagian Sql Mode seperti ini atau Hapus Group By Saja
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
- Kemudian Simpan, Selanjutnya lakukan Restart dengan command berikut :
sudo systemctl restart mysqld
Jika ingin melihat hasilnya yang sudah dirubah dapat dilakukan dengan command dibawah :
mysql -sse "SELECT @@GLOBAL.sql_mode;
Dan jika masalah ini terjadi di lokal komputer kamu cukup cari file my.ini di mysql kamu dan rubah menjadi seperti dibawah ini :
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Catatan : Cara ini saya lakukan dengan kondisi Server OS Centos atau Cloudlinux OS, untuk konfigurasi diatas dalam melakukan disable ONLY_FULL_GROUP_BY in MySQL harap dilakukan secara teliti dan hati-hati.