日前在做mysql备份还原的时候出现了一个问题,全备数据库再还原,在还原时候会出现以下错误:
ERROR 1118 (42000) at line 1480: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline
百度和谷歌了一通后总结原因为:mysql在存储临时文件类的数据库的时候默认使用innodb作为数据库存储引擎,而这个存储类型的最大支持行数为8126,针对此类问题有以下几个方法:
1、修改所在的数据库存储引擎为innodb
2、设置行格式为动态
SET GLOBAL innodb_default_row_format='dynamic';
如果不确定自己的数据库行格式是什么可以使用以下命令查询:
show global VARIABLES like '%innodb_default_row_format%'
3、关闭innodb严格格式
set global innodb_strict_mode=OFF
PS:刚开始我把这些设置加在/etc/my.cnf里面,我用helm安装的mariadb pod启动会报错,识别不到这个参数,所以我只能使用全局命令