MySQL的一些常用配置参考

新逸Cary 125 0
广告

一、MySQL5.6极简配置

[mysqld]
# 端口号
port					= 3306
# 指定server的字符集
collation-server 			= utf8_general_ci
# 指定连接时的初始化编码
init-connect				= 'SET NAMES utf8'
# server的字符编码
character-set-server 			= utf8
# 最大允许的数据包大小
max_allowed_packet 			= 500M
# 1:表名不区分大小写,0:区分大小写
lower_case_table_names			= 1
innodb_flush_log_at_trx_commit 	= 0
innodb_file_per_table 			= 1

# sql_mode配置
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

basedir=/var/lib/mysql
datadir=/var/lib/mysql/data

[client]
port					= 3306
default-character-set			= utf8

[mysql]
default-character-set			= utf8

二、linux下的my.cnf文件在哪

可以通过以下命令查找my.cnf文件

mysql --help | grep my.cnf

# 输出如下,mysql按顺序查询以下文件;
# 如果找不到,可以在以下位置新建my.cnf文件,写入配置即可
# /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

三、max_allowed_packet

有时mysql在导入、插入、更新时可能会受到max_allowed_packet参数的限制报错,修改后即可。

# 查看当前配置
show VARIABLES like '%max_allowed_packet%';

修改方法:
编辑my.cnfmy.ini来修改配置,在[mysqld]段配置进行修改。

max_allowed_packet = 300M

四、sql_mode

该参数设置不合理时,可能会遇到读写错误,设置为正确的值即可。

[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'

如果没有设置,可能会遇到的错误:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

参数说明:

  1. ONLY_FULL_GROUP_BY
    对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
  2. NO_AUTO_VALUE_ON_ZERO
    该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了
  3. STRICT_TRANS_TABLES
    在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
  4. NO_ZERO_IN_DATE
    在严格模式下,不允许日期和月份为零
  5. NO_ZERO_DATE
    设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
  6. ERROR_FOR_DIVISION_BY_ZERO
    在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
  7. NO_AUTO_CREATE_USER
    禁止GRANT创建密码为空的用户
  8. NO_ENGINE_SUBSTITUTION
    如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
  9. PIPES_AS_CONCAT
    将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
  10. ANSI_QUOTES
    启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

本文链接:https://www.cary.tech/article/565.html

原文链接:https://blog.xinac.cn/archives/mysql-setting.html


 

发表评论 取消回复
表情 图片 链接 代码

分享