mysql 出错处理问题
1.
1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
这个问题是MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。only_full_group_by的意思是 :使用这个就是使用和oracle一样的group 规则, select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行.
查看:在navicat 的新建查询中 使用全局变量的查询SELECT @@sql_mode; 出现 only_full_group_by 就代表问题一致。
解决方法:
Linux下my.cnf或Windows下My.ini
注意在[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
修改好配置文件后记得重启mysql服务
2.Incorrect string value: '\xE5\xBC\xA0\xE9\xA3\x9E' for column 'name' at row 1
这个是视图显示的字符编码和MySQL的字符传输编码不一致导致的乱码。
- mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。
- client是客户端使用的字符集。
- connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。
- database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
- results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
- server是服务器安装时指定的默认字符集设定。
- system是数据库系统使用的字符集设定。(utf-8不可修改)
查看错误:通过
windows中文版本下码表是gbk
解决方法:通过修改my.ini 修改字符集编码
请到mysql安装目录下面找到 my.ini文件
修改default-character-set=utf8 为 default-character-set=gbk
有两个地方都要改
修改文件前,先停止mysql服务 ,等修改后再重新启动
使用dos命令 :net stop mysql 来停止服务 net start mysql 来启动
3.Unknown MySQL server host 'localhost' (0) 原因及解决方法
原因
在本地Mysql数据库安装成功并启动服务后,由于Navicat的一些功能是需要联网才可以使用的,所以报错提示说连接不上主机的localhost(localhost是需要DNS解析后才会变成本地回环地址127.0.0.1,否则断网的时候,未经解析localhost就是一个普通的字符串,而不是一个我们一直以为的ip地址
解决方案:将localhost改成127.0.0.1 就好