Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQLSTATE[42000] :erreur de syntaxe ou violation d'accès :1055 L'expression n° 3 de la liste SELECT n'est pas dans la clause GROUP BY et contient des éléments non agrégés

Exécuter :

sudo mysql -u root -p
mysql> SELECT @@global.sql_mode;

(Ensuite, copiez éventuellement la sortie dans vos notes quelque part au cas où vous voudriez revenir à ces paramètres d'origine plus tard.)

Et modifier le mode SQL pour votre instance de serveur MySQL :

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

(Si jamais vous voulez revenir en arrière, vous pouvez exécuter quelque chose comme mysql> SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; en utilisant la valeur que vous avez enregistrée.)

Un moyen plus permanent (qui survivra aux redémarrages de MySQL) consisterait à utiliser les configurations MySQL. Allez dans /etc/mysql/my.cnf (ou vous devrez peut-être exécuter sudo vim /etc/mysql/mysql.conf.d/mysql.cnf ):

  • Ajouter une section pour [mysqld] et juste en dessous, ajoutez la déclaration sql_mode = "" ou quelque chose comme sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" .

  • Redémarrez le service MySQL :

     sudo systemctl restart mysql
    

(ou sudo service mysql restart )

Voir aussi https://dba.stackexchange.com/a/113153/18098