将 Mysql 转储文件导入 MariaDB 后,Json 数据丢失

Json data gets lost after import Mysql dump file to MariaDB

提问人:doraemon 提问时间:11/13/2023 最后编辑:doraemon 更新时间:11/13/2023 访问量:51

问:

我最近将一些使用MySql服务器的客户端网站迁移到了使用Maria DB的服务器。这些网站正在使用 WordPress CMS。

导入后,JSON 字段会损坏。

有没有一种自动或简单的方法可以将MySQL转储文件导入Maria DB,而不会丢失任何数据?

我在MariaDB网站上找到了一个博客,但它提供了基于表的解决方案,这可能不太实用,因为某些客户端可能有太多的表。并且每次都需要手动操作。

MySQL 玛丽亚德

评论

2赞 P.Salmon 11/13/2023
请发布 mysql 和 mariadb 版本
0赞 Akina 11/13/2023
导入后,JSON 字段会损坏。MySQL列类型是JSON吗?或者它是一些TEXt,但存储JSON值?
0赞 P.Salmon 11/13/2023
mariadb.com/kb/en/json-data-type - 似乎很清楚您的选择 - 分期似乎适合您的情况。但是考虑放弃 mariadb,无论如何它都不能与 mysql 完全兼容。您是否使用基于行的复制。
0赞 doraemon 11/13/2023
这些是 WordPress 网站,我无法预测字段类型,因为客户使用许多不同的插件,并且这些插件使用 JSON 来保存数据。无论如何,我决定将我的服务器更改为MySQL,以免将客户的站点移动到我们的服务器时感到头疼。我不想对每个客户的数据库导入进行手动操作。我不知道我的客户端的MySQL服务器版本,因为他们只提供备份文件。他们使用的是 Cpanel,所以我检查了 Cpanel 的默认值,MySql 是 5.7,而我的 MariaDB 是 10.6。
0赞 P.Salmon 11/13/2023
听起来好像你不能阻止客户端切换到mariadb......

答:

1赞 danblack 11/13/2023 #1

MariaDB 可以安装在 MySQL-5.7 实例上。

以下配置将允许访问MySQL的JSON数据类型:

[mariadb]
plugin-load-add=type_mysql_json

或者

install soname 'type_mysql_json';

评论

0赞 doraemon 11/13/2023
如果我们将MySQL转储导入MariaDB服务器,这会自动解决JSON问题吗?
0赞 danblack 11/13/2023
转储或就地升级。无论如何,转储和导入都应该有效。在您的问题中更多地描述“JSON 字段损坏”。JSON 运算符语法也缺失 (MDEV-13594)
0赞 doraemon 11/13/2023
实际上,数据并没有损坏,但不知何故,WordPress无法正确获取并覆盖它。我在两个使用一些页面构建器的网站上看到了这个问题。在一个客户站点上,他们通过页面构建器选项保存视频信息,我看到页面构建器将所有选项保存为数据库中的 Json。但是导入后,页面构建器无法访问这些 JSON 数据,并且在您编辑页面时会清除所有信息,并且在网站上显示时无法读取数据。我在另一个网站上也有类似的问题。数据在那里,但当你尝试编辑页面时,它就消失了。
0赞 danblack 11/14/2023
听起来像是一些 SQL 兼容性。检查服务器错误日志。