首页 > 解决方案 > Ruby 的 mysql2 gem 使用了不正确的数据库包(MariaDB 而不是 MySQL)

问题描述

使用 Windows 10 x64 和 Ruby 2.7.4,尝试安装 mysql2 0.5.3 gem。正常安装失败,所以我手动链接库。这个 gem 是使用 MySQL 的 C API (C Connector) v 6.1.11 编译的,所以我下载它并使用--with-mysql-dir选项 during指定它gem install,如下所示:

gem install mysql2 --platform=ruby -- --with-mysql-dir="C:\Program Files\MySQL\MySQL Connector C 6.1"

但是,尝试使用此 gem 执行程序会产生以下错误:

Incorrect MySQL client library version! This gem was compiled for 6.1.11 but the client library is 10.5.5. (RuntimeError)

可疑,因为 MySQL 项目中没有 10.5.5 版本。最后,我在安装 gem 的过程中意识到以下行:

Using msys2 packages: mingw-w64-x86_64-libmariadbclient

事实上,MariaDB 的最新版本之一是 10.5.5。为什么使用这个包,而不是我指定的包,以及如何修复它?

谢谢。

标签: ruby-on-railsrubyrubygemsmysql-connector

解决方案


如果您没有明确指定它们,MSYS 2 似乎会自动安装 lib 文件。它们实际上应该已经包含在连接器中,因此这可能会解决您的问题:

$ gem install mysql2 --platform=ruby --
  '--with-mysql-lib="C:\C:\Program Files\MySQL\MySQL Connector C 6.1\lib"
   --with-mysql-include="C:\Program Files\MySQL\MySQL Connector C 6.1\include"
   --with-mysql-dir="C:\Program Files\MySQL\MySQL Connector C 6.1"'

推荐阅读