MySQL 版本混乱

sol*_*man 6 mysql mysql-5.6

这怎么可能:

我安装了 mysql-5.6.11-osx10.7-x86.dmg,它应该是 Mac OS X 版本。10.7(x86,32 位),DMG 存档(32 位!)

但是当SHOW VARIABLES LIKE "%version%";我得到以下信息时:

mysql> SHOW VARIABLES LIKE "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.6.11                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| version                 | 5.6.11                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | osx10.7                      |
+-------------------------+------------------------------+
7 rows in set (0,00 sec)
Run Code Online (Sandbox Code Playgroud)

为什么是 x86_64 ?

修正案:

现在变得很奇怪:我在/sf/ask/100549781/的帮助下卸载了 MySQL

然后我从http://dev.mysql.com/downloads/mysql/5.5.html#downloads安装了 mysql-5.5.31-osx10.6-x86_64 显然是坐在/usr/bin/local/mysql-5.5.31-osx10.6-x86_64/(注意最后的 64)。

现在这个:

mysqld  Ver 5.5.31 for osx10.6 on i386 (MySQL Community Server (GPL))
Run Code Online (Sandbox Code Playgroud)

和:

mysql  Ver 14.14 Distrib 5.5.31, for osx10.6 (i386) using readline 5.1
Run Code Online (Sandbox Code Playgroud)

和这个:

mysql> SHOW VARIABLES LIKE "%version_compile%";
+-------------------------+---------+
| Variable_name           | Value   |
+-------------------------+---------+
| version_compile_machine | i386    |
| version_compile_os      | osx10.6 |
+-------------------------+---------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这怎么可能:(显然)下载和安装 32 位后的 32 位架构?我感觉很失落。

Rol*_*DBA 2

我正在查看@Federico 的回答中的评论。

当您运行时mysql -V,您获得了客户端程序的版本。因此,mysql客户端肯定是32位的。你需要跑mysqld -V。这将为您提供服务器的版本(即mysqld 的版本

例子

[root@***]# mysqld -V
mysqld  Ver 5.0.81-community-log for unknown-linux-gnu on x86_64 (MySQL Community Edition (GPL))
Run Code Online (Sandbox Code Playgroud)

你所看到的mysqld -V应该与 一致SHOW VARIABLES LIKE "%version%";

事实是

  • mysqld 在 32 位操作系统中运行
  • mysql 客户端连接到 mysqld

揭示三 (3) 个场景之一

  1. mysqld是32位的并且运行良好;32位客户端连接正常
  2. mysqld是64位的,运行速度慢;32位客户端连接正常
  3. mysqld 是 64 位的,如果不考虑处理 64 位地址的代码,则可能会崩溃,32 位客户端可以正常连接,直到 mysql 或 mysqld 崩溃

如果是情况1,不用担心。否则,处理 64 位地址的代码要么存在(可能性很小,要么不存在)。有可能是version_comment以前的 64 位版本留下的拼写错误。