【发布时间】:2022-10-17 22:56:17
【问题描述】:
我看过很多关于这个错误的帖子,但我发现的解决方案似乎不适用于我的情况。
我从 Oracle 数据库收到了一个相当大的(~150Go)转储文件。 我使用 OraDump 将其转换为 MySQL。但是,当我尝试在我的 MySQL 服务器中导入它时,我得到了臭名昭著的错误:
ERROR 111 (42000) at line 162936 : Row size too large. The maximum row size for the used table, not counting BLOBs, is 65535.
This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs.
我尝试增加 innodb_log_file_size 参数,删除严格模式,从 ImmoDB 切换到 myISAM,没有任何效果。
在我最后一次尝试中,我尝试将 -f 参数添加到转储导入中,希望只是挤过错误,但现在它似乎卡住了。
我不认为我可以更改表模式,因为它们是在 150Go 转储文件中创建的,我什至不知道哪些表/列有问题。
有什么办法吗?
编辑:我设法找到导致该错误的表,并发现它在我尝试声明它时发生:
#
# Table structure for table 'F_TABLE_EXAMPLE'
#
DROP TABLE IF EXISTS `F_TABLE_EXAMPLE`;
CREATE TABLE `F_TABLE_EXAMPLE` (
`COL_1` BIGINT,
`COL_2` VARCHAR(10) CHARACTER SET utf8,
`COL_3` BIGINT,
`COL_4` BIGINT,
`COL_5` DECIMAL(16,2),
`COL_6` DECIMAL(16,2),
`COL_7` VARCHAR(5) CHARACTER SET utf8,
`COL_8` DATETIME,
`COL_9` VARCHAR(50) CHARACTER SET utf8,
`COL_10` VARCHAR(4000) CHARACTER SET utf8,
`COL_11` VARCHAR(4000) CHARACTER SET utf8,
`COL_12` VARCHAR(4000) CHARACTER SET utf8,
`COL_13` VARCHAR(4000) CHARACTER SET utf8,
`COL_14` VARCHAR(4000) CHARACTER SET utf8,
`COL_15` VARCHAR(4000) CHARACTER SET utf8
) ENGINE=InnoDB;
如果我删除 COL_15,则没有错误,但包含它我会得到通常的错误。 (因为错误从那里开始,我只包括了 COL_15,但我的声明中有很多其他列)
【问题讨论】:
标签: mysql oracle innodb dump myisam