更新到 Ubuntu 16.04 后 mysql2 gem 无法正常工作 - libmysqlclient.so.18

Posted

技术标签:

【中文标题】更新到 Ubuntu 16.04 后 mysql2 gem 无法正常工作 - libmysqlclient.so.18【英文标题】:mysql2 gem not working after updating to Ubuntu 16.04 - libmysqlclient.so.18 【发布时间】:2017-05-23 03:57:24 【问题描述】:

更新前一切正常。 将 ruby​​ 1.9.3p392 与带有导轨的 RVM 一起使用 (3.2.12) 使用 MySQL 5.7.16 和 nginx 和 Unicorn

日志显示

LoadError: libmysqlclient.so.18: cannot open shared object file: No such file or directory - /home/bill/apps/xxx/shared/bundle/ruby/1.9.1/gems/mysql2-0.3.16/lib/mysql2/mysql2.so

我试过了:

    卸载/安装 mysql2 gem 正在运行bundle install

没有任何效果。更新后有人遇到这个问题吗?

【问题讨论】:

不应该安装mysql gem 并在目录中查找 1.9.3 版本吗? (/home/bill/apps/xxx/shared/bundle/ruby/1.9.3/..) 好的,谢谢。我的旧 mysql2 gem 和新安装的 mysql 5.7 之间存在兼容性问题。在我的 gemfile 中更改 gem 版本给了我另一个错误 好的,我现在的错误是:LoadError:请安装 mysql2 适配器:gem install activerecord-mysql2-adapter(mysql2 不是捆绑包的一部分。将其添加到 Gemfile。)。 mysql2 是 gemfile 的一部分,我还安装了 activerecord-mysql2-adapter。我去看看是不是socket问题 这很奇怪。你确定Gemfile.lock 包含必需的gem activerecord-mysql2-adapter 并且你已经运行bundle 来安装这个gem? 好的.. 现在可以了。我将 gemfile 更改为与我的 rails 和 mysql 5.7 兼容的旧版本( gem 'mysql2', '~> 0.3.17')。然后 Bundle install 从我的计算机...将其推送到我的服务器并对其进行部署。错误消失了。非常感谢 【参考方案1】:

删除并重新安装mysql2 gem。

我也有同样的事情。从 Ubuntu 14 升级到 16 并看到同样的错误。

为了解决这个问题,我刚刚卸载了 mysql2 gem 并使用 bundler 重新安装了它。

    卸载mysql2gem:

    $ bundle exec gem uninstall mysql2
    

    重新安装mysql2gem:

    $ bundle install
    

原因是它在安装 gem 时必须安装原生扩展,而像升级 OS 1 或更多版本这样的大型系统更改需要重新构建这些原生扩展。

希望对您有所帮助。

【讨论】:

谢谢。我在其他地方找到了一个建议 gem uninstall mysql2 的修复程序,但它不起作用。用bundle exec 强制它从捆绑包中删除它对我来说很重要。 @mrrogers 是的,这让我好几次了。 bundle exec 就像它自己的环境。同样令人困惑的是人们何时使用gem installsudo gem install。可能导致大规模混乱。

以上是关于更新到 Ubuntu 16.04 后 mysql2 gem 无法正常工作 - libmysqlclient.so.18的主要内容,如果未能解决你的问题,请参考以下文章

更新 Ubuntu 16.04 后,Freeradius 不起作用

Ubuntu 16.04 安装 Apache, MySQL, PHP7

Ubuntu 16.04 安装 Apache, MySQL, PHP7

如何更新/替换ubuntu16.04内核

如何在 ubuntu 16.04 中将 ruby​​ 从 2.0.0 更新到 2.2.2?

如何从Ubuntu14.04LTS更新到Ubuntu16.04LTS