数据库编程 MySQL 常见异常和解决办法

2020-07-23 15:59:55 浏览数 (1)

1.mysqlslap性能测试 unknown variable ‘default-character-set=utf8’

mysqlslap 可以用于模拟服务器的负载,并输出计时信息。测试时,可以指定并发连接数,可以指定 SQL 语句。如果没有指定 SQL 语句,mysqlslap 会自动生成查询 schema 的 SELECT 语句。但是可能会报错

代码语言:javascript复制
mysqlslap: unknown variable 'default-character-set=utf8'

修改 MySQL的安装目录下的配置文件my.ini ,把[client]下面的这行注释掉:

代码语言:javascript复制
 #default-character-set=utf8

即可解决,可以继续性能测试。

2.mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。 解决办法一(临时改变): SQL命令行输入:

代码语言:javascript复制
set @@GLOBAL.sql_mode='';
set sql_mode='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,但是重启MySQL服务不能生效。 解决办法二(永久改变): 改my.ini 配置,在 [mysqld]和[mysql]下添加

代码语言:javascript复制
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服务也可以正常运行。 可参考https://www.cnblogs.com/jiafeimao-dabai/p/9901108.html。

0 人点赞