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

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

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

mysqlslap: unknown variable 'default-character-set=utf8'

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

 #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命令行输入:

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]下添加

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

3.MySQL执行mysqld --initialize报错initialize specified but the data directory has files in it. Aborting.

在Windows等平台添加MySQL未系统服务时需要执行mysqld --initialize命令,有时候会把偶从,如下:

2021-08-10T07:13:28.841024Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2021-08-10T07:13:28.842081Z 0 [ERROR] Aborting                                                                

可以看到,这是因为data目录中有文件,这里的data目录即为MySQL配置的用于保存数据的目录,在MySQL的安装目录下的配置文件my.ini中定义了该路径,例如datadir=XXX/MySQL5.7.26/data/,可以查看该路径下是否有文件,如有文件可以将其备份到其他目录,再重新初始化,即可成功执行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI码东道主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值