文章目录
1.max_allowed_packet:服务端接收最大数据包
此参数限制Server接受的数据包大小,默认是1M也有版本默认是4M,如果插入的数据超过这个量大小就会报错。
报错内容大致如下:
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1314 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
配置修改方式:
1.配置文件修改
在my.cnf配置文件的[mysqld]段或者mysql的server配置段进行修改
max_allowed_packet = 20M
2.命令修改
注意命令修改在服务重启后会失效
set global max_allowed_packet = 2*1024*1024*10
2.lower_case_table_names:对表名大小写不敏感
说明是否数据目录所在的文件系统对文件名的大小写敏感。1说明对文件名的大小写不敏感,0表示敏感,2表示把大写转换为小写去查询。默认情况下windows系统上是1,linux上是0,macOS是2。为了简单处理直接把表名称设置为小写加下划线,把这个参数设置为1。
如果因为大小写不一致会导致mysql报指定表不存在的错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'test.xxx' doesn't exist
配置修改方式:在my.cnf配置文件的[mysqld]段修改配置的值为1
lower_case_table_names=1
3.character-set-server:sql服务的字符集
如果想varchar类型的列插入表情字符可能会报如下错误:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1
报错的内容是当前列的字符集不支持这种类型的字符串,原因是列的字符集有问题,解决办法就是把列的字符集修改为utf8mb4
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
4.skip-name-resolve:跳过对连接的客户端进行DNS反向解析
如果没有配置这个参数,可能会导致mysql连接很慢,查看下进程,发现有很多这样的连接:
218 | unauthenticated user | 192.168.10.6:44500 | NULL | Connect | NULL | login | NULL
219 | unauthenticated user | 192.168.10.6:44501 | NULL | Connect | NULL | login | NULL
同时,‘t1’@‘127.0.0.1’会转化为’t1’@‘localhost’登录,此时’t1’@’%‘定义的密码并不适用,因为它走的是hostname验证,如果配置了这个参数的话,则’t1’@’%‘中定义的密码可用于’t1’@'127.0.0.1’的登录。
配置方式
在my.cnf配置文件里面添加如下配置,然后重启服务生效
[mysqld]
skip-name-resolve
5.log-error 错误文件输出位置
log-error = C:/AppServ/MySQL/logs/err.err
6.log 日志文件输出位置
log = C:/AppServ/MySQL/logs/query_log.log
7.log-slow-queries 慢查询日志文件输出位置
log-slow-queries = C:/AppServ/MySQL/logs/slow_log.log