我们正在尝试将XWiki实例从v7.0.1升级到v13.10.9,并需要转换遗留的生产数据。
我们正在用MariaDB v10.3和v10.9进行测试。为了更改字符集,我们使用了如下SQL命令:
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:
-- 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;发布于 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)要多一些,但你还是应该试一试。
https://stackoverflow.com/questions/73832618
复制相似问题