Yanlışlıkla ONLY_FULL_GROUP_BY modunu şu şekilde etkinleştirdim:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Nasıl devre dışı bırakabilirim?
columnsorgunuzu uyarlamak için ANY_VALUE ( ) işlevini kullanabilirsiniz. Buradaki
Yanlışlıkla ONLY_FULL_GROUP_BY modunu şu şekilde etkinleştirdim:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Nasıl devre dışı bırakabilirim?
columnsorgunuzu uyarlamak için ANY_VALUE ( ) işlevini kullanabilirsiniz. Buradaki
Yanıtlar:
Çözüm 1: Kaldır ONLY_FULL_GROUP_BY MySQL konsolundan
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
daha fazla okuyabilirsin buradan
Çözüm 2: ONLY_FULL_GROUP_BY'yi kaldırın phpmyadmin'den
REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''), MySQL yine de istenmeyen virgülleri kayıttan kaldırır. OP'nin cevabı doğrudur.
GLOBALbenim için işe yaramadı, ama işe SESSIONyaradı. SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Geçerli mysql ayarlarınızı korumak ve devre dışı bırakmak ONLY_FULL_GROUP_BYiçin phpmyadmin veya kullandığınız herhangi bir istemciyi ziyaret etmenizi ve şunu yazın:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
sonraki kopya sonucu my.ini dosyanıza .
nane :sudo nano /etc/mysql/my.cnf
ubuntu 16 ve üstü :sudo nano /etc/mysql/my.cnf
ubuntu 14-16 :/etc/mysql/mysql.conf.d/mysqld.cnf
copy_mesonuç, varsayılan olarak kırpılabilen uzun bir metin içerebilir. Metnin tamamını kopyaladığınızdan emin olun!eski cevap:
Eğer devre dışı istiyorsanız kalıcı "hata SEÇ listesinin İfade #N GRUBU TARAFINDAN maddede değil ve GRUP TARAFINDAN fıkrada sütunlarda işlevsel bağlı değildir nonaggregated sütunu 'db.table.COL' içerir, bu sql_mode = only_full_group_by ile uyumsuz "şu adımları uygulayın:
sudo nano /etc/mysql/my.cnfBunu dosyanın sonuna ekle
[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"sudo service mysql restart MySQL'i yeniden başlatmak için
Bu, TÜM kullanıcılar ONLY_FULL_GROUP_BYiçin devre dışı bırakılacak
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]bu dosyada olmayabilir, bir içerme dizininde olabilir. Önce bu komutu kullanın: grep -R "\[mysqld\]" *orada ne olduğunu görmek için - ve bu konuda deneyingrep -R "\bsql_mode\b" *
Kullanırken dikkatli olun
SET sql_mode = ''
Bu aslında etkin durumda olan tüm modları siler. Diğer ayarlarla uğraşmak istemiyorsanız,
SELECT @@sql_mode
ilk olarak, etkinleştirilmiş modların virgülle ayrılmış bir listesini almak için, ONLY_FULL_GROUP_BYseçeneği olmadan bu listeye ayarlayın .
then SET it to this list without the ONLY_FULL_GROUP_BY option.?
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';
sql_mode=<comma-separated-list>ardından sunucunuzu durdurup başlatın. My.cnf dosyasının yeri ve en iyi düzenleme yolu için işletim sisteminizin belgelerini izleyin.
Bunu deneyin:
SET sql_mode = ''
Topluluk Not: Aşağıdaki yanıtlarda belirtildiği gibi, bu aslında etkin olan tüm SQL modlarını temizler . İstediğiniz bu olmayabilir.
''= 'full group by is disabled'? MySQL bazı aptalca şeyler yapar ama bu orada.
0 rows affectedve sorgum hala çalışmıyor:Error Code: 1055. Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...
global emin olun .
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
sql_modeönceki değere geri dönüş. Şimdi ne yapabilirim?
Mevcut modları kaldırmadan sql_mode'a yalnızca bir mod ekleme:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',<mode_to_add>'));
Başkalarını kaldırmadan yalnızca belirli bir modu sql_mode'dan kaldırma:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'<mode_to_remove>',''));
Sizin durumunuzda, yalnızca ONLY_FULL_GROUP_BYmodu kaldırmak istiyorsanız , aşağıdaki komutu kullanın:
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Referans: http://johnemb.blogspot.com/2014/09/adding-or-removing-individual-sql-modes.html
@Cwhisperer sayesinde. Aynı sorunu bir Symfony uygulamasında doktrin ile yaşadım. Ben sadece benim config.yml seçeneği ekledi:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
Bu benim için iyi çalıştı.
SET NAMESbu yöntemi kullanarak ayarlamayın , çoğu durumda sytrfony zaten gerekli değildir doctrine.dbal.charset cofnig: symfony.com/doc/current/reference/configuration/doctrine.html ve PDO dns ile düzgün yapar, SET NAMES bunu yapmak için modası geçmiş bir yol, 5.3'ten büyük PHP sürümü için kullanılmamalıdır
Açık:
Yapmak:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Kopyala ve yapıştır:
[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
Dosyanın altına
$ sudo service mysql restart
/etc/mysql/mysql.cnf2 yapılandırma klasörünü !includedir /etc/mysql/conf.d/+ işaret eder !includedir /etc/mysql/mysql.conf.d/. Aynı şey geçerli /etc/mysql/my.cnf. Bu nedenle, yapılandırma dosyalarının güncelleme sırasında geçersiz kılınmadığını varsayıyorum. Daha fazla http://dev.mysql.com/doc/mysql/en/server-system-variables.html
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"belki de bunun /etc/mysql/mysql.conf.d/mysqld_mode.cnfyerine yeni bir dosya oluşturmak önemlidir
@Eyo Okon Eyo çözümünün MySQL sunucusu yeniden başlatılmadığı sürece çalıştığını fark ettim, sonra varsayılan ayarlar geri yüklendi. İşte benim için çalışan kalıcı bir çözüm:
Belirli SQL modunu kaldırmak için (bu durumda ONLY_FULL_GROUP_BY ), geçerli SQL modunu bulun:
SELECT @@GLOBAL.sql_mode;
sonucu kopyalayın ve ihtiyacınız olmayanı kaldırın ( ONLY_FULL_GROUP_BY )
Örneğin:
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
için
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
bu dosyayı oluştur ve aç:
/etc/mysql/conf.d/disable_strict_mode.cnf
ve yeni SQL modunuzu yazın ve yapıştırın:
[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
MySQL'i yeniden başlat:
sudo service mysql restart
Veya ANY_VALUE()ONLY_FULL_GROUP_BY değer reddini bastırmak için kullanabilirsiniz , buradan daha fazla bilgi edinebilirsiniz
ANY_VALUE()
MySQL dokümantasyon da aşağıdaki yöntemleri belirtir:
sql-mode="<modes>"My.cnf (Unix işletim sistemleri) veya my.ini (Windows) gibi bir seçenek dosyasında ayarlayın .--sql-mode="<modes>"seçeneği kullanın.* <modes>Virgülle ayrılmış farklı modların listesi nerede .
SQL modunu açıkça temizlemek için --sql-mode=""komut satırında veya sql-mode=""bir seçenek dosyasında kullanarak boş bir dizeye ayarlayın .
sql-mode=""Seçeneği ekledim /etc/my.cnfve işe yaradı.
Bu SO çözümü , MySQL tarafından hangi my.cnf dosyasının kullanıldığını bulmanın yollarını tartışır.
Değişiklik yaptıktan sonra MySQL'i yeniden başlatmayı unutmayın.
SELECT @@GLOBAL.sql_mode;
WAMP kullanıyorsanız. WAMP simgesine sol tıklayın, ardından MySQL -> MySQL ayarları -> sql-moduna gidin ve sonra sql-mode-> kullanıcı modunu seçin
Benim sql (Mac OS X üzerinde çalışan sürüm 5.7.11) bu benim için mysql kabuk istemcide çalışır:
SET
@@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
MySQL 5.6 belgelerine göre, sql_mode varsayılan
5.6.5 sürümünde boş dize ve 5.6.6 sürümünde NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES
sql_mode := ''mümkün olduğunu iddia ediyor. Neden katılmıyorsun?
MySQL 5.7 ve Ubuntu 16.04 üzerinde mysql.cnf dosyasını düzenleyin.
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Aşağıdaki gibi sql_mode'u ekleyin ve dosyayı kaydedin.
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Benim durumumda, STRICT_TRANS_TABLES modunu ve ONLY_FULL_GROUP_BY modunu kaldırdığımı gözlemleyin.
Bunu yaptığınızda, mod yapılandırması kalıcı olarak kaydedilir. @@ sql_mode dosyasını MySQL üzerinden güncellerseniz, makine / servis yeniden başlatıldığında sıfırlanacağı için bu durum farklı olabilir.
Bundan sonra, değiştirilen yapılandırma için harekete geçin, mysql hizmetini yeniden başlatın:
$ sudo service mysql restart
MySQL'e erişmeye çalışın:
$ mysql -u user_name -p
Oturum açıp MySQL konsoluna erişebiliyorsanız sorun yok. Harika!
AMA benim gibi, hatayı yüz ise "bilinmeyen değişken sql_mode" belirtir, sql_mode için bir seçenektir mysqld , tekrar düzenlemek dosya mysql.cnf, geri dönüp değiştirmek zorunda kalacak [mysql]kadar [mysqld]. MySQL hizmetini yeniden başlatın ve MySQL konsolunda oturum açmaya çalışırken son bir test yapın. İşte burada!
Mysql tezgahında düzeltmek için yaptığım şey bu:
Aşağıdaki değeri aşağıdaki komutla almadan önce
SELECT @@sql_mode
daha sonra ONLY_FULL_GROUP_BY anahtarını listeden kaldırdım ve aşağıdaki komutu yapıştırdım
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'
Mac OS Mojave için (10.14) Açık terminal
$ sudo mkdir /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ cd /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ sudo nano my.cnf
Aşağıdaki yapıştırın:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Kaydet ve Çık nano ShortKeys: Ctrl+xve yveEnter
Not:mysql-5.7.24-macos10.14-x86_64 Bu komutlardagüncellemeniz gerekebilir, içine girdiğiniz doğru klasör adını kontrol edin/usr/local/
Umarım birine yardım eder!
sql_modeMySQL 5.7.9 veya üstü
Bir mod eklemek veya moddan bir mod kaldırmak sql_modeiçin list_addve list_dropişlevlerini kullanabilirsiniz .
Geçerli moddan bir modu kaldırmak SESSION.sql_modeiçin aşağıdakilerden birini kullanabilirsiniz:
SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY');
SET sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
GLOBAL.sql_modeGeçerli yeniden çalışma işlemi için devam eden moddan hizmet yeniden başlatılana kadar bir modu kaldırmak için .
SET GLOBAL sql_mode = sys.list_drop(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY');
MySQL 5.7.8 veya öncesi
Yana sql_modedeğer modlarının bir CSV dizesi, sen dize kullanarak gerçekleştirilebilir kalıntı virgül, içermediğinden emin gerekir TRIM(BOTH ',' FROM ...).
Bir modu sql_modedeğişkenten kaldırmak için şunu kullanmak istersiniz:REPLACE()TRIM() kalan virgüllerin kaldırıldığından emin olmak birlikte .
SET SESSION sql_mode = TRIM(BOTH ',' FROM REPLACE(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
sql_modeDeğişkene bir mod eklemek için CONCAT_WS(',', ...), geçerli modlara bir virgül eklenmesini veTRIM() virgül eklenmesini kalan virgüllerin kaldırılmasını .
SET SESSION sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@SESSION.sql_mode));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@GLOBAL.sql_mode));
NOT:
GLOBALdeğişkeni yok değil yaymakSESSIONyeni bir bağlantı kurulana kadar, değişken.
GLOBALÇalışan hizmet yeniden başlatılıncaya kadar değişken devam edecektir.
SESSIONBağlantı kapalı ve yeni bir bağlantı kurulana kadar değişken akım bağlantısı için devam edecektir.
GLOBAL.sql_modeYana SET sql_mode = 'ONLY_FULL_GROUP_BY';olmadan çalıştırıldı GLOBALmodifiye değişim, sadece mevcut etkilenen SESSIONde ilgilidir durum değeri, @@sql_mode. Kaldırmak ve sunucu yeniden başlatma değerinde genel varsayılana dönmek için, değerini kullanmak istersiniz @@GLOBAL.sql_mode. [sic]
Geçerli
SESSIONdeğer yalnızca geçerli bağlantı için geçerlidir. Sunucuya yeniden bağlanmak, değeri sunucuya geri döndürür.GLOBAL.
Geçerli oturum durumu değerini geçerli genel değere döndürmek için aşağıdakilerden birini kullanabilirsiniz:
SET SESSION sql_mode = @@GLOBAL.sql_mode;
SET @@sql_mode = @@GLOBAL.sql_mode;
SET sql_mode = @@GLOBAL.sql_mode;
SESSION.sql_modeDeğeri olarak değiştirONLY_FULL_GROUP_BY
SET sql_mode = 'ONLY_FULL_GROUP_BY';
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+--------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+--------------------+----------------------------------------------+
| ONLY_FULL_GROUP_BY | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+--------------------+----------------------------------------------+
Döndür SESSION.sql_modedeğer GLOBAL.sql_modedeğeri
SET sql_mode = @@GLOBAL.sql_mode;
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+----------------------------------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+----------------------------------------------+----------------------------------------------+
| NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------+----------------------------------------------+
sql_modeSunucu başlangıcında SQL modunu ayarlamak için
--sql-mode="modes", komut satırındaki veyasql-mode="modes"my.cnf (Unix işletim sistemleri) veya my.ini (Windows) gibi bir seçenek dosyasındaki seçeneği kullanın. [sic]
Desteklenen ve varsayılan modları belirlemek için lütfen MySQL sürümünüze bakın .
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION" #default <= 5.7.4
sql_modedeğerlerMySQL sürüm başına dokümantasyon değerleri kaldırıldığından referans için buraya ekledim.
MySQL> = 8.0.11 8.0.5 - 8.0.10 Atlandı
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
MySQL> = 5.7.8, <= 8.0.4
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
MySQL 5.7.7
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
MySQL> = 5.7.5, <= 5.7.6
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ENGINE_SUBSTITUTION
MySQL> = 5.6.6, <= 5.7.4
NO_ENGINE_SUBSTITUTION
MySQL <= 5.6.5
''
MySQL 8.0.11 kullanıyorsanız, 'NO_AUTO_CREATE_USER' yazılımını sql modundan kaldırmanız gerekir.
Dosyaya /etc/mysql/my.cnfve [mysqld] üstbilgisine aşağıdaki satırı ekleyin
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Ben doktrin kullanıyorum ve benim doctrine.local.php içinde driverOptions ekledim:
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'myusr',
'password' => 'mypwd',
'dbname' => 'mydb',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
),
),
),
),
));
Phpmyadmin içinde kullanıcının ayrıcalıklarda SUPER etkinleştirilmiş olması gerekir.
CPanel / WHM ile bir VPS / Sunucu çalıştıran kime , ONLY_FULL_GROUP_BY öğesini kalıcı olarak devre dışı bırakmak için aşağıdakileri yapabilirsiniz
Kök erişimine ihtiyacınız var (bir VPS veya özel sunucuda)
Kök olarak WHM girin ve phpMyAdmin'i çalıştırın
Değişkenler'i tıklayın, arayın sql_mode, 'Düzenle'yi tıklayın ve bu metin kutusundaki tüm satırı kopyalayın
örneğin bunu kopyalayın:
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
SFTP - SSH (kök) üzerinden sunucunuza bağlanın ve dosyayı indirin /etc/my.cnf
my.cnfYerel PC'nizde bir metin düzenleyici dosyası ile açın ve [mysqld]adım (2) 'de kopyaladığınız tüm satırı ( bölümün altına ) yapıştırın ancak kaldırınONLY_FULL_GROUP_BY,
örneğin bunu yapıştırın:
# disabling ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Dosyayı kaydedin my.cnfve tekrar yükleyin/etc/
WHM girin ve "WHM> Hizmetleri Yeniden Başlat> SQL Server (MySQL)" seçeneğine gidin ve hizmeti yeniden başlatın
Im mysql ile çalışma ve kök kullanıcı ile kayıtlı, benim için çalışan çözüm aşağıdaki gibidir:
mysql> SET SESSION sql_mode = (SEÇ REPLACE (@@ sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Bu Ubuntu 14+ üzerinde MySql 5.7+ için kalıcı bir çözümdür:
$ sudo bash -c "echo -e \"\nsql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" >> /etc/mysql/mysql.conf.d/mysqld.cnf"
$ sudo service mysql restart
# Check if login attempt throws any errors
$ mysql -u[user] -p # replace [user] with your own user name
Hatasız giriş yapabiliyorsanız, şimdi ayarlanmış olmalısınız.
Yapılandırma dosyasını kullanarak devre dışı bırakabilirsiniz my.cnf:
$ mysql --verbose --help | grep my.cnf
Yani macOS 10.12'de usr/local/etc/my.cnf. sql_modeBurada düzenleyebilirsiniz :
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
İşte benim çözüm phpmyadmin pano üzerinden Mysql yapılandırmasını değiştirme:
"Bu, sql_mode = only_full_group_by ile uyumsuz" düzeltmek için: phpmyadmin'i açın ve Ana Sayfa'ya gidin ve 'Değişkenler' alt menüsünü seçin. SQL modunu bulmak için aşağı kaydırın. SQL modunu düzenleyin ve 'ONLY_FULL_GROUP_BY' öğesini kaldırın.
SET sql_mode = ''mi