Ubuntu kullanirken karşılaşılan mysql group by hatasının çözümü

Ubuntu üzerine lamp kurduktan sonra sorunsuz bir bir şekilde php ve mysql ile birlikte uygulamalar geliştiriyordum. ta ki bir uygulamam da group by kullanana kadar.

group by kullandığımda bana aşağıdakine benzer bir hata döndürmüş idi

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘returntr_prod.tbl_customer_pod_uploads.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

hemen bu sorunu nette aradım. karşıma birkaç çözüm önerisi gelsede aslında 3 çözüm vardı. 

bunlardan birincisi

SELECT @@sql_mode;

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,’ONLY_FULL_GROUP_BY’,”));

SET sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’

veya 

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,’ONLY_FULL_GROUP_BY’,”));

bu sql kodlarını phpmyadmin de sql kodu olarak çalıştırmak.

ikincisi ise

phpmyadmin üzerinde aşağıdaki ayarların değiştirilmesi idi

variables(değişkenler) seçeneği altında bulunan sql mod(sql mode) bölümünü edit (Düzenle) diyerek açılan kutuda ONLY_FULL_GROUP_BY ifadesini kaldırın.

Buraya kadar uyguladıklarım sorunu geçici olarak hep çözdü. fakat bilgisayarı yeniden başlattıktan sonra hep aynı işlemleri tekrardan uygulamak zorunda kalıyorsunuz.

Kalıcı çözüm olarak ise

CTRL+ALT+T ile terminali açtıktan sonra

sudo gedit /etc/mysql/my.cnf 

komutunu vermeniz ve onaylamanız. 

bu onaydan sonra sistem sizden root şifrenizi isteyecektir. root şifrenizi yazdıktan sonra açılan belgenin en altına

[mysqld]

sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

kodlarını ekleyip belgeyi kaydedip çıkın. 

ve daha sonra 

sudo service mysql restart  

komutunu kullanarak mysql’ i  yeniden başlatın.

artık bundan sonra bilgisayarı kapatsanız dahi group by hatası ile karşılaşmayacaksınız.

kaynak https://stackoverflow.com/

 

Facebooktwitterlinkedin