Mysql2::Client::LONG_PASSWORD(名称错误)

Mysql2::Client::LONG_PASSWORD (NameError)

我正在 Docker.

的 rails 应用程序中尝试将我的 ruby 版本从 2.4.5 升级到 2.4.9

重建我的容器后,它因错误而停止:

uninitialized constant Mysql2::Client::LONG_PASSWORD (NameError)

我的 mysql2 gem 版本被锁定在:

gem 'mysql2', '0.3.21'

我尝试将 mysql2 gem 升级到版本 0.4.0,但最终出现了另一个错误。

有什么关于升级东西以使其工作的顺序的建议吗?

我将 mysql2 升级到版本“0.4.10”

似乎成功了

mysql gem 有一些更新,但您的应用程序不支持 在您的 gemset 上搜索此文件

gems/mysql2-0.3.21/lib/mysql2/client.rb

第12行

:connect_flags => REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,

这样改

:connect_flags => REMEMBER_OPTIONS | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,

运行 迁移

最佳做法是更新您的代码,但通过此更改您可以继续工作

在 docker 容器中有同样的问题:

rails 5.1.7
ruby v2.5.9 
mysql2 0.4.6 (using mysql v5.7.18)

解决方案:

Upgraded gem mysql2 to 0.5.3

有趣的是,在 mac 上与本地 ruby 一切正常。