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