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/
,可以查看该路径下是否有文件,如有文件可以将其备份到其他目录,再重新初始化,即可成功执行。