SQLSTATE[42000]: Syntax error or access violation: 1055 Expression

原因

MySQL 5.7.5及更高版本实现了对功能依赖的检测。 如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下是这样),MySQL拒绝查询,其中选择列表,HAVING条件或ORDER BY列表引用既未在GROUP BY子句中命名也未在功能上依赖于它们的非聚合列。 (在5.7.5之前,MySQL不检测功能依赖性,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前行为的描述,请参阅MySQL 5.6参考手册。)

解决办法

  • 方法一

    sudo mysql -u root -p

    登陆MYSQL后执行如下语句

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

  • 方法二

    vi /etc/mysql/my.cnf

    在文件最后添加加语句

    sql_mode =""

    重启MYSQL

    sudo systemctl restart mysql

点赞