首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MariaDB中的MariaDB表从latin1转换为utf8,得到了SQL错误[1118] [42000]:行大小太大

问将MariaDB中的MariaDB表从latin1转换为utf8,得到了SQL错误[1118] [42000]:行大小太大
EN

Stack Overflow用户
提问于 2022-09-23 20:19:19
回答 1查看 26关注 0票数 0

我们正在尝试将XWiki实例从v7.0.1升级到v13.10.9,并需要转换遗留的生产数据。

我们正在用MariaDB v10.3和v10.9进行测试。为了更改字符集,我们使用了如下SQL命令:

代码语言:javascript
复制
alter table `xwiki`.`activitystream_events`
convert to character set utf8mb4 collate 'utf8mb4_unicode_ci';

但是,上面的命令出现了一个错误,即:

SQL Error [1118] [42000]: (conn=14) Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

其他表中也存在类似的错误。

我的问题:

我们如何解决这个问题?设置更改等。

这种类型的数据库转换的常见做法是什么?例如,新版本的Java项目会有一个自动的升级后迁移来处理吗?

如有任何提示和建议,我将不胜感激。

错误所涉及的表的DDL:

代码语言:javascript
复制
-- xwiki.activitystream_events definition

CREATE TABLE `activitystream_events` (
  `ase_eventid` varchar(48) NOT NULL,
  `ase_requestid` varchar(48) DEFAULT NULL,
  `ase_stream` varchar(255) DEFAULT NULL,
  `ase_date` datetime DEFAULT NULL,
  `ase_priority` int(11) DEFAULT NULL,
  `ase_type` varchar(255) DEFAULT NULL,
  `ase_application` varchar(255) DEFAULT NULL,
  `ase_user` varchar(255) DEFAULT NULL,
  `ase_wiki` varchar(255) DEFAULT NULL,
  `ase_space` varchar(255) DEFAULT NULL,
  `ase_page` varchar(255) DEFAULT NULL,
  `ase_hidden` bit(1) DEFAULT NULL,
  `ase_url` varchar(2000) DEFAULT NULL,
  `ase_title` varchar(2000) DEFAULT NULL,
  `ase_body` varchar(2000) DEFAULT NULL,
  `ase_version` varchar(30) DEFAULT NULL,
  `ase_param1` varchar(2000) DEFAULT NULL,
  `ase_param2` varchar(2000) DEFAULT NULL,
  `ase_param3` varchar(2000) DEFAULT NULL,
  `ase_param4` varchar(2000) DEFAULT NULL,
  `ase_param5` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`ase_eventid`),
  KEY `EVENT_TYPE` (`ase_type`),
  KEY `EVENT_PRIORITY` (`ase_priority`),
  KEY `EVENT_WIKI` (`ase_wiki`),
  KEY `EVENT_DATE` (`ase_date`),
  KEY `EVENT_PAGE` (`ase_page`),
  KEY `EVENT_USER` (`ase_user`),
  KEY `EVENT_SPACE` (`ase_space`),
  KEY `EVENT_STREAM` (`ase_stream`),
  KEY `EVENT_APP` (`ase_application`),
  KEY `EVENT_HIDDEN` (`ase_hidden`),
  KEY `EVENT_REQUESTID` (`ase_requestid`),
  KEY `ase_page_date` (`ase_page`,`ase_date`),
  KEY `ase_param1` (`ase_param1`(200)),
  KEY `ase_param2` (`ase_param2`(200)),
  KEY `ase_param3` (`ase_param3`(200)),
  KEY `ase_param4` (`ase_param4`(200)),
  KEY `ase_param5` (`ase_param5`(200))
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-28 21:00:47

在过去,我们一直成功地使用这个脚本(从带有编程权限保存的XWiki页面执行)在升级后将许多XWiki实例转换为真正的UTF8 (utf8mb4),就我所记得的MySQL和MariaDB变体而言:

https://snippets.xwiki.org/xwiki/bin/view/Extension/Migrate%20MySQL%20databases%20to%20utf8mb4/

升级通常比你的(从7跳到13)要多一些,但你还是应该试一试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73832618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档