突然无法转储远程数据库:在字段列表中找不到'generation_expression'列。

4

我一直都能够使用CLI中的mariadb-dump来转储我的远程数据库。但是从今天开始,我突然遇到了以下错误:

mysqldump: Couldn't execute 
'select column_name, extra, generation_expression, data_type 
from information_schema.columns 
where table_schema=database() 
and table_name='<my-table>'': 
Unknown column 'generation_expression' in 'field list' (1054)

我检查了服务器信息模式,确实缺少列generation_expression。它存在于我打算转储到的本地测试服务器上。mariadb-dump版本为Ver 10.19 Distrib 10.11.2-MariaDB,适用于Linux(x86_64),服务器版本为MySQL 5.6。

我在互联网或stackoverflow上找不到任何相关问题。我四处看看,似乎只有在版本5.7中才引入了generation_expression。我无法可行地升级到5.7。我认为这不是必需的,因为在此之前转储工具一直运行良好。

我正在考虑重新安装mariadb,但这需要很多时间和精力,并且可能无法解决问题。

编辑:我刚刚重新安装了数据库服务器并清除了所有数据(首先进行了备份),但仍然遇到相同的错误。

1个回答

6

这在MariaDB 10.11中已经改变(请参见MDEV-16029和此commit)。

因此,您应该降级您的MariaDB客户端工具(10.10或以下),或者使用MySQL客户端工具。在过去的10年中,MariaDB和MySQL已经分道扬镳,因此不能保证使用MySQL客户端工具与MariaDB服务器时转储将正确工作。

还要考虑升级您的MySQL安装。 MySQL 5.6几年前已经到达EOL。


这个方法对我有用!我不得不将mariadb降级到10.10.3版本(以及它的依赖项)。对于Arch Linux,它们可以在https://archive.archlinux.org/packages/m/(搜索mariadb)找到,并使用`pacman -U <url>`安装。从那里开始,重新启动服务器就足够了。非常感谢! - Robbin
2
感谢您,对于Alpine Linux v3.18,以下的小技巧让我成功获取了与mysql 5.6兼容的mysqldump:apk add mariadb-client=10.6.14-r0 --repository=http://dl-cdn.alpinelinux.org/alpine/v3.17/main不过遗憾的是,Alpine Linux并没有为每个版本保留一些先前的软件包版本。 - Prianyshnikov Dmytro
2
感谢您,对于Alpine Linux v3.18,以下的小技巧让我成功获取了与mysql 5.6兼容的mysqldump:apk add mariadb-client=10.6.14-r0 --repository=http://dl-cdn.alpinelinux.org/alpine/v3.17/main不过,有点遗憾的是,Alpine Linux并没有为每个版本保留一些先前的软件包版本。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接