版本与MySQL的Distrib编号

smb*_*yan 25 mysql

打字

mysql --version
Run Code Online (Sandbox Code Playgroud)

Linux shell中的命令我得到以下内容:

mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1
Run Code Online (Sandbox Code Playgroud)

数字5.0.77显然是指已知的MySQL版本号.我有疑问,14.12是什么意思?这是在任何地方记录/解释的?

Fli*_*McF 28

Ver指的是mysql命令行客户端的版本 - 您通过键入'mysql'来
调用的内容Distrib指的是您的客户端构建的mysql服务器版本.这不要与你连接的mysql服务器混淆,可以通过它获得SELECT VERSION();

mysql客户端(你在唤起什么)与服务器一起分发,而AFAIK,没有简单的方法可以自己构建它.

我也找不到任何相关文档,因此源代码是文档的唯一"来源".

第一站:client/mysql.cc:mysql客户端.

    static void usage(int version)
    {
    ...
    printf("%s  Ver %s Distrib %s, for %s (%s) using %s %s\n",
             my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE,
             readline, rl_library_version);
Run Code Online (Sandbox Code Playgroud)

如您所见,它使用常量VER表示"14.12",MYSQL_SERVER_VERSION表示"5.0.77"

这些常数定义在哪里?是问题所在.

VER在客户端/ mysql.cc的顶部(我的源代码中的第51行)附近定义为运行时的常量.

const char *VER= "14.14"; 
Run Code Online (Sandbox Code Playgroud)

我会假设,手动或签入过程更新.这很可能是"客户端"的版本,因为它就在客户端代码中.

MYSQL_SERVER_VERSION在include/mysql_version.h(第12行)中定义,它用于客户端和服务器(mysql/mysqld)

#define MYSQL_SERVER_VERSION            "5.1.56"
Run Code Online (Sandbox Code Playgroud)

(它实际上在配置脚本中设置并在配置时替换)