[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated
背景:
最近在使用MySQL数据库时,遇到了两个问题:一个是在导入数据的时候,报错说datetime默认值不能为0000 ;另一个是程序在运行时,报了以上标题上的错误,这两个错误都是修改了MySQL的配置文件中的sql_mode得以解决。
目的:
本篇文章一是记录这个解决办法,二是记录一下这些基本的Linux操作命令。
查看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, and NO_ENGINE_SUBSTITUTION
解决办法:
前面一个默认值问题,去掉NO_ZERO_IN_DATE, NO_ZERO_DATE就可以了,标题的这个错误去掉ONLY_FULL_GROUP_BY就可以了。
my.cnf是mysql启动时加载的配置文件,我们找到这个文件,看看它的内容
全局搜索 : find / -name my.cnf
切到etc目录下:cd /etc
查看内容:cat my.cnf 或 cat my.cnf more
可以看到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, and NO_ENGINE_SUBSTITUTION,比如我们要去掉该配置中的ONLY_FULL_GROUP_BY这一项。
修改文件:vi my.cnf
使用键盘上的Page Up和Page Down键可以上下翻页;按下Insert键,可以见到窗口左下角有“Insert”字样,表示当前为插入编辑状态,这时从键盘输入的内容将插入到光标位置;再按下Insert键,左下角将有“Replace”字样,表示当前为替换编辑状态,这时从键盘输入的内容将替换光标位置的内容。
保存
编辑完内容后,按下Esc键,并输入“:wq”,然后回车就可以保存退出。
如果不想保存而直接退出,则按下Esc键后,输入“:q!”,然后回车即可。“wq”表示Write和Quit,即保存退出;“q!”表示忽略修改强行退出。
修改完成后,可以再查看my.cnf文件内容,可以看到已经修改好了。
重新启动mysql,让配置生效:service mysqld restart
启动之后,可以查看mysql的端口,默认是3306端口有没有起来
查看端口占用情况:netstat -lnp
MySQL已经启动了。