DTS迁移多text字段时出现Row size too large的错误

    本周DTS一个增量迁移任务出现一个很诡异的问题,之所以说诡异是因为DTS已经为该用户的库同步了很长一段时间的增量数据(数据量在15G+),今天突然出现了这个问题:

    从异常的信息大致可以推测出出错的原因是新插入的一行数据需要存储在数据页的实际数据长度大于一个数据页的长度(8126).所以首先对比了一下源表和目标表的数据结构(可能是两边的表结构不一致导致的),两边的表结构是一致的,但却是定义了许多Text类型的大字段而已

    然后查询了两边的innodb_file个配置,源库:

     目标库:

    这样一看出错的原因就一目了然了.简单解释一下,Barracuda对应row_format(dynamic, compress),其中dynamic下text的所有内容都是off-page存放的;Antelope 对应row_format(compact, redundant),其中compact下的text是存786B在row中,超过部分存在off-page.所以要解决问题就必须将innodb_file的给是改成Barracuda与源库一致,当这并不能马上解决问题,因为innodb表的存储格式在创建时已经确定了,那么就只能重建表了.为跟用户确认目标库无业务写入的情况下通过create table * select * ,insert into * select 以及rename在目标库重建了该表,之后就完美解决了.

时间: 2024-08-30 11:53:44

DTS迁移多text字段时出现Row size too large的错误的相关文章

更新text字段时出现Row size too large报错应付措施_Mysql

起因: 团购开发报告说更新时出错. 更新SQL如下: 复制代码 代码如下: UPDATE table_name d SET d.column_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' WHERE d.ID=100976; 报错信息如下: Error Code : 1118 Row si

Mysql 报Row size too large 65535 的原因及解决方法_Mysql

报错信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535 向mysql的表插件一个字段 类型为text时,或修改一个字段类型为text时,报出上面的错误.其实我对这个错误的原因理解也不是很深,给出一些我查到的解释吧 大意是数据表中有一个设定长度为64K的字段索引,当表中字段(不知道是字段名字还是什么)不能超过这个长度,65,535所说明的是针对的是整个表的

mysql表多个text的字段,出现以下错误,#1118 - Row size too large (> 8126). Changing some column

问题描述 首先感谢解答.本人有一个表,里面有10多个text的字段,会填很多数据.但是在保存时候出现以下错误,#1118-Rowsizetoolarge(>8126).ChangingsomecolumnstoTEXTorBLOBorusingROW_FORMAT=DYNAMICorROW_FORMAT=COMPRESSEDmayhelp.Incurrentrowformat,BLOBprefixof768bytesisstoredinline.请问怎么解决?万分感谢! 解决方案 解决方案二:参

MySQL内核月报 2014.10-MySQL· 系统限制·text字段数

背景 当用户从oracle迁移到MySQL时,可能由于原表字段太多建表不成功,这里讨论一个问题:一个InnoDB表最多能建多少个text字段. 我们后续的讨论基于创建表的语句形如:create table t(f1 text, f2 text, ..., fN text)engine=innodb; 默认配置 在默认配置下,上面的建表语句,N取值范围为[1, 1017]. 为什么是1017这个"奇怪"的数字.实际上单表的最大列数目是1024-1,但是由于InnoDB会增加三个系统内部字

mysql中varchar和text字段类型理解

最近有几个同学问我varchar和text有啥别吗,这个问题,以前说真的也没太多的整理,以前遇到text在设计中就是尽可能的拆到另一个表中,保持主表尽量的瘦小,可以让innodb bp缓存更多的数据. 今天借次机会系统整理一下,主要从存储上,最大值,默认值几个方面进行比较. BTW: 从ISO SQL:2003上讲VARCHAR是一个标准型,但TEXT不是(包括tinytext).varchar在MySQL 5.0.3之前只支持0-255byte, 在5.0.3之后才支持到0-65535byte

e.Row.Cells[3].Text =Convert.ToDateTime(e.Row.Cells[3].Text).ToShortDateString();出现的问题

问题描述 e.Row.Cells[3].Text=Convert.ToDateTime(e.Row.Cells[3].Text).ToShortDateString();调试提示:该字符串未被识别为有效的DateTime.有一个从索引0处开始的未知字.该怎么解决? 解决方案 解决方案二:你是要把你的"日期时间"变成"日期"格式是吗?绑定的时候直接设置格式EVal(字段,"{0:yyyy-mm-dd}").ToString()你先试试吧.最好下次提

text字段

支持text字段处理的仅有:下面的函数和语句可以与 ntext.text 或 image 数据一起使用.函数          语句 DATALENGTH    READTEXT PATINDEX      SET TEXTSIZE SUBSTRING     UPDATETEXT TEXTPTR       WRITETEXT TEXTVALID 1:替换 --创建数据测试环境create table #tb(aa text)insert into #tb select 'abc123abc1

c语言-如何用c读取从excel导出的文本文件中的text字段

问题描述 如何用c读取从excel导出的文本文件中的text字段 (初学c语言)我想编写一个实现材料管理功能的程序.因还不会从Excel中直接读取数据,因此选择了从Excel导出到txt文件中,然后再读取到程序当中. 但是问题来了.经常遇到的情形是,记录都有一个或者多个字段是字符型(数据库中的描述,非C语言的字符),从Excel中导出的文本中是以"text,text"处理的,即以英文状态下的双引号将这个字段放在了一起.下面是某条记录: 项目号 仓库名称 货位名称 Ident代码 材料代

ASP.NET MVC 5 学习教程:数据迁移之添加字段

原文 ASP.NET MVC 5 学习教程:数据迁移之添加字段 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Server LocalDB Edit方法和Edit视图详解 添加查询 Entity Framework 数据迁移之添加字段 添加验证 Details 和 Delete 方法详解 在本节中,我们将使用Entity Framework Cod