mysql配置-------mysql错误:Row size too large (> 8126).

写入表数据到mysql时出现错误
mysql错误:Row size too large (> 8126).

相关配置参数:
max_allowed_packet: 服务器发送和接受的最大包长度,当单行数据较大时,需要调整该参数。
innodb_log_file_size: **(一般插入表字段过多,修改这个)**该参数确定数据日志文件的大小,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。
innodb_log_buffer_size: 该参数确定日志文件所用的内存大小,设置时用M单位进行设置。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1~8M之间的值。

MariaDB 5.5.41 & MySQL 5.7.21在配置文件没有配置参数的情况下,系统的默认值为:
MariaDB5.5.41 MySQL5.7.21
max_allowed_packet = 1048576 #1M max_allowed_packet = 4194304 #4M
innodb_log_file_size = 5242880 #5M innodb_log_file_size = 50331648 #48M
innodb_log_buffer_size = 8388608 #8M innodb_log_buffer_size = 16777216 #16M
MariaDB [(none)]> select version();

±-------------------+
| version() |
±-------------------+
| 5.5.41-MariaDB-log |
±-------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> show variables like '%max_allowed_packet%';
±-------------------------±-----------+
| Variable_name | Value |
±-------------------------±-----------+
| max_allowed_packet | 1048576 |
| slave_max_allowed_packet | 1073741824 |
±-------------------------±-----------+
2 rows in set (0.00 sec)

MariaDB [(none)]> show variables like '%innodb_log_file_size%';
±---------------------±--------+
| Variable_name | Value |
±---------------------±--------+
| innodb_log_file_size | 5242880 |
±---------------------±--------+
1 row in set (0.00 sec)

MariaDB [(none)]> show variables like '%innodb_log_buffer_size%';
±-----------------------±--------+
| Variable_name | Value |
±-----------------------±--------+
| innodb_log_buffer_size | 8388608 |
±-----------------------±--------+
1 row in set (0.00 sec)

MariaDB [(none)]>

MySQL 5.7.21的默认值:
mysql> select version();
±----------+
| version() |
±----------+
| 5.7.21 |
±----------+
1 row in set (0.00 sec)
mysql> show variables like '%max_allowed_packet%';
±-------------------------±-----------+
| Variable_name | Value |
±-------------------------±-----------+
| max_allowed_packet | 4194304 |
| slave_max_allowed_packet | 1073741824 |
±-------------------------±-----------+
2 rows in set (0.01 sec)

mysql> show variables like '%innodb_log_file_size%';
±---------------------±---------+
| Variable_name | Value |
±---------------------±---------+
| innodb_log_file_size | 50331648 |
±---------------------±---------+
1 row in set (0.00 sec)

mysql> show variables like '%innodb_log_buffer_size%';
±-----------------------±---------+
| Variable_name | Value |
±-----------------------±---------+
| innodb_log_buffer_size | 16777216 |
±-----------------------±---------+
1 row in set (0.01 sec)

解决办法:==========================================================================================================================================
需要重启MySQL的方法
vim /etc/my.cnf,根据实际情况进行参数调整:

[mysqld]
innodb_strict_mode=0
max_allowed_packet = 1G
innodb_log_file_size = 512M
innodb_log_buffer_size = 512M

修改之后,重启mysql服务。


也可以使用mysql命令试试,因为不同的机器可能配置不同,所以不一定以上就适合
不需要重启服务的办法
重点是这句必须的

mysql>innodb_strict_mode=0;
mysql> set global innodb_file_per_table =ON;
mysql> set global innodb_file_format = barracuda;

=====================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值