本人新手,最近在做一个公司项目时运行sql语句遇到一个错误
SQL语句:
SELECT
uc.appraiser,uc.time,u.name
FROM
user_c uc JOIN user u ON uc.appraiser=u.userId
WHERE
uc.taile=#{taile} AND uc.userId=#{check}
GROUP BY uc.appraiser
错误:
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘party.uc.time’ which is not functionally dependent on columns in GROUP BY clause
由于对错误不明了,特在此留下文章,防止以后忘记
原因:
由于我的项目是做好之后打包部署到服务器的,我的mysql版本是5.5,而服务器的mysql版本是5.0,可能导致了某些不兼容
解决方法:
打开navcat,
用sql查询:
select @@global.sql_mode
查询出来的值为:
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
去掉ONLY_FULL_GROUP_BY,重新设置值。
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'
还有第二种方法,此处并不推荐对我本人使用
vim /etc/mysql/conf.d/mysql.cnf
滚动到文件底部复制并粘贴
[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
到文件的底部
保存并退出输入模式
service mysql restart
重启MySQL。
因为此方法要重启mysql,但是mysql在服务器,所以并不能随便重启