MariaDB:未知数据类型“;MYSQL“U JSON”;
根据MariaDB的网站,您可以简单地用MariaDB替换MySQL。 很好,我想,但是在安装了MariaDB(10.5.7)之后,我的一些InnoDB表已经损坏了。错误是MariaDB:未知数据类型“;MYSQL“U JSON”;,mysql,mariadb,innodb,ubuntu-18.04,Mysql,Mariadb,Innodb,Ubuntu 18.04,根据MariaDB的网站,您可以简单地用MariaDB替换MySQL。 很好,我想,但是在安装了MariaDB(10.5.7)之后,我的一些InnoDB表已经损坏了。错误是未知数据类型“MYSQL\u JSON”。 其中一个损坏的表在phpmyadmin中也显示“正在使用”,我根本无法访问它 所以,我到处寻找解决方案,显然MariaDB不支持这种类型。有没有办法解决这个问题?一定有办法隐藏那些纵队,对吧 我试图降级回MySQL 5.7,但现在MySQL不再工作了,所以我重新安装了MariaDB。
未知数据类型“MYSQL\u JSON”
。
其中一个损坏的表在phpmyadmin中也显示“正在使用”,我根本无法访问它
所以,我到处寻找解决方案,显然MariaDB不支持这种类型。有没有办法解决这个问题?一定有办法隐藏那些纵队,对吧
我试图降级回MySQL 5.7,但现在MySQL不再工作了,所以我重新安装了MariaDB。我也找不到任何降级指南
下面是一个CREATETABLE语句,用于损坏的表,它来自我的本地测试数据库。我成功地把其他的都甩了。只是不是这个。当然,我有一天以前的备份,但是一整天的工作都没有了也不是一件好事
CREATE TABLE `news` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`author_id` int(10) unsigned DEFAULT NULL,
`title` varchar(180) COLLATE utf8mb4_unicode_ci NOT NULL,
`content` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`excerpt` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sources` longtext COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '(DC2Type:json)',
`header` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`copyright` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`category` smallint(5) unsigned DEFAULT NULL,
`featured` tinyint(1) NOT NULL,
`language` smallint(5) unsigned NOT NULL,
`published` datetime DEFAULT NULL,
`status` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `IDX_1DD39950F675F31B` (`author_id`),
CONSTRAINT `FK_1DD39950F675F31B` FOREIGN KEY (`author_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=167 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
该表由ORM自动生成
如果我能从那张表中得到几行数据,那我的一周就完了。我只需要最后一天的内容栏。
我的系统从备份中恢复运行。只是那些消息不见了
更新
我能够在
/var/lib/mysql/{mydatabase}/
下找到一个.ibd文件,其中包含我需要的所有纯文本数据。我只是手动复制内容并将其插入数据库。mysql-5.7到MariaDB的就地升级,因为JSON类型需要一个插件来读取其数据格式:
将以下内容添加到MariaDB服务器配置中:
plugin_load_add=mysql_json=type_mysql_json
plugin_maturity=alpha
运行mysql\u升级——强制获取所有JSON数据类型并转换它们
或者只需altertablenews强制
更改一个表。您可以为一个或两个受影响的表发布CREATE TABLE..
语句吗?我将其添加到问题中了该版本的MariaDB支持JSON列吗?显然,它应该与该版本一起工作。我创建了第二个数据库,在那里我导入了备份,这个数据库运行得很好。我只需要从这些丢失的新闻中取回内容。其他栏目其实并不重要,因为我可以很容易地再次填写它们。它们都是自动完成的。apt install命令将MySQL替换为MariaDB。幸运的是,现在一切都好了。我收回了所有数据,在删除新闻表、恢复1天的备份,然后手动插入损坏的数据库表文件(只需使用文本编辑器打开)中丢失的数据后,MariaDB现在似乎运行正常。无论如何,感谢您花费时间并尝试提供帮助。与此问题相关的是,这是一个悬而未决的问题,可以使自动升级路径更加平滑,这样您就不会看到这些错误。