我需要使用某些参数以编程方式调用 mysqldump。我尝试使用--source-data
选项或--master-data
选项。
文档中有以下短语:
从 MySQL 8.0.26 开始,使用
--source-data
,在MySQL 8.0.26 之前,使用--master-data
为了使用正确的参数,我需要确定 MySQL 客户端的版本。但在这里我面临一个问题。我在不同的服务器上运行mysqldump --version 命令,发现版本没有正式化,在不同的服务器上以不同的格式输出。
在一台服务器上,我得到以下结果:
mysqldump Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
以及另一台服务器上的以下内容:
mysqldump Ver 10.13 Distrib 5.7.37, for Linux (x86_64)
格式明显不同。在这种情况下,版本处于不同的位置。在第一个服务器版本上是8.0.28
,在另一个服务器版本上是5.7.37
. 也许还有其他格式?如何简单地以major.minor.path
格式获取客户端版本?
似乎正则表达式 \d*\.\d*\.\d*
是一个合适的选择。但另一方面,这似乎是一个不可靠的解决方案,因为可能有更多格式用于如何输出 MySQL 客户端版本。
我找到了三个获取版本的选项。
在 Linux 中
您可以找到已安装
mysql-client
软件包的版本:这里的版本格式对每个人都是一样的。
可以通过一行提取版本:
在 Windows 中
最简单的方法是获取
mysql.exe
文件本身的版本:有关如何以编程方式执行此操作的更多详细信息(c#):
https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.fileversioninfo.fileversion?view=net-6.0
选择
mysql --help
您可以通过执行并检查输出文本中是否有所需的参数来简单地了解给定版本的客户端是否支持该命令。