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?
column
sorgunuzu 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?
column
sorgunuzu 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.
GLOBAL
benim için işe yaramadı, ama işe SESSION
yaradı. 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_BY
iç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_me
sonuç, 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.cnf
Bunu 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_BY
iç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_BY
seç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 affected
ve 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_BY
modu 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 NAMES
bu 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.cnf
2 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.cnf
yerine 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.cnf
ve 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+x
ve y
veEnter
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_mode
MySQL 5.7.9 veya üstü
Bir mod eklemek veya moddan bir mod kaldırmak sql_mode
için list_add
ve list_drop
işlevlerini kullanabilirsiniz .
Geçerli moddan bir modu kaldırmak SESSION.sql_mode
iç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_mode
Geç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_mode
değ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_mode
değ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_mode
Değ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:
GLOBAL
değişkeni yok değil yaymakSESSION
yeni bir bağlantı kurulana kadar, değişken.
GLOBAL
Çalışan hizmet yeniden başlatılıncaya kadar değişken devam edecektir.
SESSION
Bağlantı kapalı ve yeni bir bağlantı kurulana kadar değişken akım bağlantısı için devam edecektir.
GLOBAL.sql_mode
Yana SET sql_mode = 'ONLY_FULL_GROUP_BY';
olmadan çalıştırıldı GLOBAL
modifiye değişim, sadece mevcut etkilenen SESSION
de 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
SESSION
değ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_mode
Değ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_mode
değer GLOBAL.sql_mode
değ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_mode
Sunucu 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_mode
değ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.cnf
ve [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.cnf
Yerel 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.cnf
ve 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_mode
Burada 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