Skip to main content

ERROR QUERY NO 1055 – INCOMPATIBLE WITH SQL_MODE = ONLY_FULL_GROUP_BY

Halo sahabat JiwaCoding apa kabar? Semoga kabar baik dan tetap semangat untuk terus ngoding ya ☺

Sepertinya aplikasi yang sedang kamu bangun sedang tidak baik-baik saja. Kamu sedang berusaha mencari solusi Query Error Number 1055 bukan? Kamu sudah berada di postingan yang  tepat nih. Disini JiwaCoding akan memberikan beberapa cara mengatasinya.

Tidak perlu panjang lebar mari  langung ke topik permasalahannya. JiwaCoding memiliki contoh pesan query error seperti berikut:

Error Number: 1055

Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column '<DB_NAME>.C.nama_jurusan' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Berikut contoh perintah query yang JiwaCoding jalankan di aplikasi:

SELECT `B`.`id_kelas`, `B`.`jenjang`, `C`.`nama_jurusan` FROM `tbl_jadwal_ajar` `A` JOIN `tbl_kelas` `B` ON `A`.`idkelas`=`B`.`id_kelas` JOIN `tbl_jurusan` `C` ON `B`.`jurusan_id`=`C`.`id_jurusan` WHERE `A`.`idguru` = '1007' AND `A`.`idtahun` = '6' AND `A`.`idsemester` = '2' GROUP BY `B`.`id_kelas` ORDER BY `B`.`jenjang` ASC

Di sini JiwaCoding ingin menampilkan informasi id_kelas,jenjang,nama_jurusan dari hasil join 3 tabel. Tetapi muncul error SELECT list is not in GROUP BY bla..bla..bla. Error ini muncul di MYSQL Versi 5.7+. Karena di versi ini secara default sql_mode only_full_groub_by diaktifkan.

Oke solusi pertama mari kita perbaiki query di atas dengan menambahkan fungis ANY_VALUE. Sehingga query kita menjadi seperti ini:

SELECT `B`.`id_kelas`, `B`.`jenjang`, ANY_VALUE(`C`.`nama_jurusan`) AS nama_jurusan FROM `tbl_jadwal_ajar` `A` JOIN `tbl_kelas` `B` ON `A`.`idkelas`=`B`.`id_kelas` JOIN `tbl_jurusan` `C` ON `B`.`jurusan_id`=`C`.`id_jurusan` WHERE `A`.`idguru` = '1007' AND `A`.`idtahun` = '6' AND `A`.`idsemester` = '2' GROUP BY `B`.`id_kelas` ORDER BY `B`.`jenjang` ASC

Ya, dengan menambahkan fungsi ANY_VALUE sepertinya masalah di error ini berhasil diatasi. Oke, berarti masalah kita sudah selesai ya. Tapi bagaimana kalau query dengan error semacam ini sudah banyak ditulis di aplikasi kita? Sebenarnya cara paling mudah yaitu hapus saja value only_full_groub_by pada variable sql mode. Caranya jika sahabat JiwaCoding menggunakan phpMyAdmin, silakan pilih menu Variables.


Scroll ke bawah cari variable sql mode dan hapus value only_full_groub_by.

Dengan begitu error query pada aplikasi sudah berhasil kita atasi.

Baik mungkin itu beberapa solusinya semoga cukup membantu para sahabat JiwaCoding.

 

Referensi:

https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

Comments

Popular posts from this blog

Tips Import Database Ukuran Besar di MySQL

  Hi, sahabat JiwaCoding apa kabar? Kali ini JiwaCoding akan memberikan tips bagaimana cara import database berukuran besar misal di atas 100 MB atau lebih. Ada beberapa cara yang dapat kita lakukan: Konfigurasi file php.ini dan my.ini Cara yang pertama kita dapat menyesuaikan konfigurasi file php.ini dan my.ini. Sebagai contoh jika menggunakan XAMPP maka file ini berlokasi di <path lokasi xampp diinstal>\php  Cari dan buka file php.ini menggunakan text editor yang biasa kita gunakan.   Berikut beberapa variable default yang perlu kita sesuaikan dengan kebutuhan kita: max_execution_time = 200     max_input_time = 200     memory_limit = 256M     upload_max_filesize = 1000M     post_max_size = 100M Selanjutnya itu kita perlu menyesuaikan konfigurasi file my.ini. Lokasi file ini di <path lokasi xampp diinstal>\mysql\bin  Cari dan buka file my.ini menggunakan text editor yang b...