暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql8主备搭建报错ERROR 1118(42000):Row size too large(>8126)的解决方案分享

热衷于分享各种干货知识,大家有想看或者想学的可以评论区留言,秉承着“开源知识来源于互联网,回归于互联网”的理念,分享一些日常工作中能用到或者比较重要的内容,希望大家能够喜欢,不足之处请大家多宝贵地意见,我们一起提升,守住自己的饭碗。

正文开始

 

问题描述

最近网友问了个问题,说他在搭建MySQL主从的时候,备库导入主库的备份数据报错ERROR 1118(42000):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

分析

真实原因是字段太多, 导致行长度超过了8126,官方要求每页能存放至少2条数据, 即每条数据最长为PAGE_SIZE的一半。

解决方案

检查 INNODB_STRICT_MODE

SHOW VARIABLES LIKE 'innodb strict mode';

关闭严格模式

set global innodb_strict_mode=off;

也可以在配置文件my.cnf中修改,并重启数据库

在[mysqld]下面新增
innodb_strict_mode=0

总结

什么是 INNODB STRICT MODE?
数据库参数innodb_strict_mode用于设置是否开启严格检查模式,当innodb_strict_mode=ON时,执行创建表(CREATE TABLE)、更改表(ALTER TABLE)和创建索引(CREATE INDEX)等语句时会使用严格模式,若存在错误不会触发警告而是直接抛出错误;当innodb_strict_mode=OFF时则使用非严格模式,遇到错误语法会用默认语法替换。检查源数据库和目标数据库的该参数是否一致至关重要,若不一致可能导致任务失败,建议将其设置为一致,因为开启严格模式时 InnoDB 会严格遵循 SQL 标准,尤其在数据一致性和完整性方面,若发现潜在数据完整性问题会返回错误而非警告,有助于开发人员提前捕获问题以确保数据的高可靠性。

 



END
往期文章回顾

文中的概念来源于互联网,如有侵权,请联系我删除。

欢迎关注公众号:小周的数据库进阶之路,一起交流AI、数据库、中间件和云计算等技术。如果觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。



文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论