MariaDB:未知数据类型“;MYSQL“U JSON”;

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。

根据MariaDB的网站,您可以简单地用MariaDB替换MySQL。 很好,我想,但是在安装了MariaDB(10.5.7)之后,我的一些InnoDB表已经损坏了。错误是
未知数据类型“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现在似乎运行正常。无论如何,感谢您花费时间并尝试提供帮助。与此问题相关的是,这是一个悬而未决的问题,可以使自动升级路径更加平滑,这样您就不会看到这些错误。