Ho abilitato accidentalmente la modalità ONLY_FULL_GROUP_BY in questo modo:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Come lo disabilito?
column
) per aggiornare la tua query. Vedi documento qui
Ho abilitato accidentalmente la modalità ONLY_FULL_GROUP_BY in questo modo:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
Come lo disabilito?
column
) per aggiornare la tua query. Vedi documento qui
Risposte:
Soluzione 1: rimuovere ONLY_FULL_GROUP_BY dalla console mysql
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
puoi leggere di più qui
Soluzione 2: rimuovere ONLY_FULL_GROUP_BY da phpmyadmin
REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')
, MySQL rimuove comunque le virgole indesiderate dal record. La risposta dell'OP è corretta.
GLOBAL
non ha funzionato per me, ma SESSION
ha funzionato. SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Per mantenere le impostazioni correnti di mysql e disabilitarle, ONLY_FULL_GROUP_BY
suggerisco di visitare phpmyadmin o qualunque client si stia utilizzando e digitare:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
risultato della copia successiva nel tuo my.ini
file.
menta :sudo nano /etc/mysql/my.cnf
Ubuntu 16 e versioni successive :sudo nano /etc/mysql/my.cnf
ubuntu 14-16 :/etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
Il risultato può contenere un testo lungo che potrebbe essere ritagliato per impostazione predefinita. Assicurati di copiare l'intero testo!vecchia risposta:
Se si desidera disabilitare in modo permanente l' errore "L' espressione #N dell'elenco SELECT non è nella clausola GROUP BY e contiene la colonna non aggregata 'db.table.COL' che non è funzionalmente dipendente dalle colonne nella clausola GROUP BY; ciò è incompatibile con sql_mode = only_full_group_by "fai questi passaggi:
sudo nano /etc/mysql/my.cnf
Aggiungi questo alla fine del file
[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
per riavviare MySQL
Questo disabiliterà ONLY_FULL_GROUP_BY
per TUTTI gli utenti
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
potrebbe non essere in questo file, potrebbe trovarsi in una directory include. Usa prima questo comando: grep -R "\[mysqld\]" *
per vedere cosa c'è - e per questo provagrep -R "\bsql_mode\b" *
Stai attento usando
SET sql_mode = ''
Questo in realtà cancella tutte le modalità attualmente abilitate. Se non vuoi fare confusione con altre impostazioni, ti consigliamo di fare un
SELECT @@sql_mode
in primo luogo, per ottenere un elenco separato da virgole delle modalità abilitate, quindi SET su questo elenco senza l' ONLY_FULL_GROUP_BY
opzione.
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>
quindi fermati e avvia il tuo server. Segui i documenti del tuo sistema operativo per l'ubicazione e il modo migliore per modificare my.cnf.
Prova questo:
SET sql_mode = ''
Nota della comunità: come indicato nelle risposte di seguito, questo in realtà cancella tutte le modalità SQL attualmente abilitate. Potrebbe non essere necessariamente quello che vuoi.
''
= 'full group by is disabled'
? MySQL fa alcune cose piuttosto stupide, ma quella è lassù.
0 rows affected
e la mia domanda non funziona ancora:Error Code: 1055. Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...
global
nel comando .
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
rollback al valore precedente. Cosa posso fare ora?
Aggiunta di una sola modalità a sql_mode senza rimuovere quelle esistenti:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',<mode_to_add>'));
Rimozione solo di una modalità specifica da sql_mode senza rimuoverne altre:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'<mode_to_remove>',''));
Nel tuo caso, se vuoi rimuovere solo la ONLY_FULL_GROUP_BY
modalità, usa il comando seguente:
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Riferimento: http://johnemb.blogspot.com/2014/09/adding-or-removing-individual-sql-modes.html
Grazie a @cwhisperer. Ho avuto lo stesso problema con Doctrine in un'app di Symfony. Ho appena aggiunto l'opzione al mio config.yml:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
Questo ha funzionato bene per me.
SET NAMES
usando questo metodo, nella maggior parte dei casi non è necessario symfony già impostato tramite doctrine.dbal.charset cofnig: symfony.com/doc/current/reference/configuration/doctrine.html , e lo fa correttamente tramite PDS dns, SET NAMES è un modo obsoleto di farlo, che non dovrebbe essere usato per la versione PHP maggiore di 5.3
Su:
Fare:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Copia e incolla:
[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
Alla fine del file
$ sudo service mysql restart
/etc/mysql/mysql.cnf
punta a 2 cartelle di configurazione !includedir /etc/mysql/conf.d/
+ !includedir /etc/mysql/mysql.conf.d/
. Lo stesso vale per /etc/mysql/my.cnf
. Quindi presumo che i file di configurazione non vengano sovrascritti durante l'aggiornamento. Puoi leggere di più quihttp://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"
forse è importante creare un nuovo file /etc/mysql/mysql.conf.d/mysqld_mode.cnf
, invece
Ho notato che la soluzione @Eyo Okon Eyo funziona fino a quando il server MySQL non viene riavviato, quindi vengono ripristinate le impostazioni predefinite. Ecco una soluzione permanente che ha funzionato per me:
Per rimuovere una particolare modalità SQL (in questo caso ONLY_FULL_GROUP_BY ), trova la modalità SQL corrente:
SELECT @@GLOBAL.sql_mode;
copia il risultato e rimuovi da esso ciò di cui non hai bisogno ( ONLY_FULL_GROUP_BY )
per esempio:
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
per
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
crea e apri questo file:
/etc/mysql/conf.d/disable_strict_mode.cnf
e scrivi e incolla la tua nuova modalità SQL:
[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
riavvia MySQL:
sudo service mysql restart
Oppure puoi utilizzare ANY_VALUE()
per sopprimere il rifiuto del valore ONLY_FULL_GROUP_BY, puoi leggere di più qui
ANY_VALUE()
La documentazione di MySQL specifica inoltre i seguenti metodi:
sql-mode="<modes>"
in un file di opzioni come my.cnf (sistemi operativi Unix) o my.ini (Windows).--sql-mode="<modes>"
opzione.* Dov'è <modes>
un elenco di diverse modalità separate da virgole.
Per cancellare esplicitamente la modalità SQL, impostarla su una stringa vuota utilizzando --sql-mode=""
dalla riga di comando o sql-mode=""
in un file di opzioni.
Ho aggiunto l' sql-mode=""
opzione /etc/my.cnf
e ha funzionato.
Questa soluzione SO discute i modi per scoprire quale file my.cnf è utilizzato da MySQL.
Non dimenticare di riavviare MySQL dopo aver apportato modifiche.
SELECT @@GLOBAL.sql_mode;
Se si utilizza WAMP. Fai clic sinistro sull'icona WAMP, quindi vai su MySQL -> Impostazioni MySQL -> sql-mode e quindi seleziona sql-mode-> modalità utente
Sul mio sql (versione 5.7.11 in esecuzione su Mac OS X) questo funziona per me sul client shell 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"
Secondo la documentazione di MySQL 5.6, sql_mode è l'impostazione predefinita
stringa vuota in MySQL 5.6.5 e versioni successive NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES in 5.6.6 +
sql_mode := ''
di essere possibili. Perché non sei d'accordo?
Su MySQL 5.7 e Ubuntu 16.04, modifica il file mysql.cnf.
$ sudo nano /etc/mysql/conf.d/mysql.cnf
Includi sql_mode come il seguente e salva il file.
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Tieni presente che, nel mio caso, ho rimosso la modalità STRICT_TRANS_TABLES e ONLY_FULL_GROUP_BY.
In questo modo, salverà la configurazione della modalità in modo permanente. Diversamente se aggiorni @@ sql_mode tramite MySQL, perché verrà ripristinato al riavvio della macchina / servizio.
Dopodiché, per agire sulla configurazione modificata, riavvia il servizio mysql:
$ sudo service mysql restart
Prova ad accedere al mysql:
$ mysql -u user_name -p
Se sei in grado di accedere e accedere alla console MySQL, è ok. Grande!
MA , se come me, dovessi riscontrare l'errore "variabile sconosciuta sql_mode" , che indica che sql_mode è un'opzione per mysqld , dovrai tornare indietro, modificare nuovamente il file mysql.cnf e cambiare [mysql]
in [mysqld]
. Riavviare il servizio MySQL ed eseguire un ultimo test tentando di accedere alla console MySQL. Ecco qui!
Questo è quello che ho eseguito per correggere su Mysql workbench:
Prima ho ottenuto il valore corrente con il comando seguente
SELECT @@sql_mode
successivamente ho rimosso la chiave ONLY_FULL_GROUP_BY dall'elenco e ho incollato il comando seguente
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'
Per Mac OS Mojave (10.14) Apri terminale
$ 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
Incolla quanto segue:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Tasti di scelta rapida per salvare ed uscire da nano: Ctrl+x
e y
eEnter
Nota: potrebbe essere necessario eseguire l'aggiornamentomysql-5.7.24-macos10.14-x86_64
in questi comandi, basta controllare il nome della cartella corretta all'interno/usr/local/
Spero che possa aiutare qualcuno!
sql_mode
MySQL 5.7.9 o successivo
Per aggiungere o rimuovere una modalità sql_mode
, è possibile utilizzare list_add
e le list_drop
funzioni.
Per rimuovere una modalità dalla corrente SESSION.sql_mode
, è possibile utilizzare una delle seguenti:
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');
Per rimuovere una modalità GLOBAL.sql_mode
che persiste per l' operazione di runtime corrente , fino al riavvio del servizio .
SET GLOBAL sql_mode = sys.list_drop(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY');
MySQL 5.7.8 o precedente
Poiché il sql_mode
valore è una stringa di modalità CSV, è necessario assicurarsi che la stringa non contenga virgole residue, che è possibile ottenere utilizzando TRIM(BOTH ',' FROM ...)
.
Per rimuovere una modalità dalla sql_mode
variabile, si desidera utilizzare REPLACE()
insieme TRIM()
per assicurarsi che vengano rimosse eventuali virgole residue.
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', ''));
Per aggiungere una modalità alla sql_mode
variabile, si desidera utilizzare CONCAT_WS(',', ...)
, per assicurarsi che una virgola sia aggiunta alle modalità correnti e TRIM()
per assicurarsi che vengano rimosse eventuali virgole residue.
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));
NOTA: la modifica della
GLOBAL
variabile non si propaga allaSESSION
variabile fino a quando non viene stabilita una nuova connessione.La
GLOBAL
variabile persisterà fino al riavvio del servizio in esecuzione.La
SESSION
variabile persisterà per la connessione corrente, fino a quando la connessione non viene chiusa e non viene stabilita una nuova connessione.
GLOBAL.sql_mode
Poiché è SET sql_mode = 'ONLY_FULL_GROUP_BY';
stato eseguito senza il GLOBAL
modificatore, la modifica ha interessato solo il SESSION
valore dello stato corrente , che riguarda anche @@sql_mode
. Per rimuoverlo e ripristinare il valore predefinito globale al riavvio del server , si desidera utilizzare il valore da @@GLOBAL.sql_mode
. [sic]
Il
SESSION
valore corrente è valido solo per la connessione corrente. La riconnessione al server ripristinerà il valore alGLOBAL
valore.
Per ripristinare il valore dello stato della sessione corrente sul valore globale corrente, è possibile utilizzare uno dei seguenti:
SET SESSION sql_mode = @@GLOBAL.sql_mode;
SET @@sql_mode = @@GLOBAL.sql_mode;
SET sql_mode = @@GLOBAL.sql_mode;
Cambia SESSION.sql_mode
valore inONLY_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 |
+--------------------+----------------------------------------------+
Ripristina il SESSION.sql_mode
valore sul GLOBAL.sql_mode
valore
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
Per impostare la modalità SQL all'avvio del server, utilizzare l'
--sql-mode="modes"
opzione nella riga di comando osql-mode="modes"
in un file di opzioni come my.cnf (sistemi operativi Unix) o my.ini (Windows). [sic]
Consulta la tua versione di MySQL per determinare le modalità supportate e predefinite .
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION" #default <= 5.7.4
sql_mode
Valori predefinitiPoiché i valori per versione della documentazione di MySQL sono stati rimossi, li ho aggiunti qui come riferimento.
MySQL> = 8.0.11 8.0.5 - 8.0.10 Saltato
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
''
Se si utilizza MySQL 8.0.11, è necessario rimuovere "NO_AUTO_CREATE_USER" da sql-mode.
Aggiungi la seguente riga nel file /etc/mysql/my.cnf
e nell'intestazione [mysqld]
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Sto usando dottrine e ho aggiunto driverOptions nel mio doctrine.local.php:
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',''))"
),
),
),
),
));
In phpmyadmin l'utente deve attivare SUPER nei privilegi.
A chi esegue un VPS / Server con cPanel / WHM , è possibile effettuare le seguenti operazioni per disabilitare permanentemente ONLY_FULL_GROUP_BY
È necessario l'accesso root (su un VPS o un server dedicato)
Immettere WHM come root ed eseguire phpMyAdmin
Fai clic su Variabili, cerca sql_mode
, fai clic su "Modifica" e copia l'intera riga all'interno di quella casella di testo
ad es. copia questo:
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
Connettiti al tuo server tramite SFTP - SSH (root) e scarica il file /etc/my.cnf
Apri con un my.cnf
file dell'editor di testo sul tuo PC locale e incolla (sotto la [mysqld]
sezione) l'intera riga che hai copiato al passaggio (2) ma rimuoviONLY_FULL_GROUP_BY,
es. incolla questo:
# 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
Salvare il my.cnf
file e caricarlo nuovamente in/etc/
Immettere WHM e andare su "WHM> Riavvia servizi> SQL Server (MySQL)" e riavviare il servizio
Sto lavorando con mysql e registrato con l'utente root, la soluzione che funziona per me è la seguente:
mysql> SET SESSION sql_mode = (SELEZIONA REPLACE (@@ sql_mode, 'ONLY_FULL_GROUP_BY', ''));
Questa è una soluzione permanente per MySql 5.7+ su Ubuntu 14+:
$ 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
Se riesci ad accedere senza errori, dovresti essere pronto per ora.
Puoi disabilitarlo usando il file di configurazione my.cnf
:
$ mysql --verbose --help | grep my.cnf
Quindi in macOS 10.12, è a usr/local/etc/my.cnf
. Puoi modificare sql_mode
qui:
# 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"
Ecco la mia soluzione che cambia la configurazione di Mysql attraverso il dashboard di phpmyadmin:
Per correggere "questo è incompatibile con sql_mode = only_full_group_by": Apri phpmyadmin e vai alla Home Page e seleziona il sottomenu 'Variabili'. Scorri verso il basso per trovare la modalità sql. Modifica la modalità sql e rimuovi 'ONLY_FULL_GROUP_BY' Salva.
SET sql_mode = ''
?