更新到 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 重新安装了它。
卸载mysql2
gem:
$ bundle exec gem uninstall mysql2
重新安装mysql2
gem:
$ bundle install
原因是它在安装 gem 时必须安装原生扩展,而像升级 OS 1 或更多版本这样的大型系统更改需要重新构建这些原生扩展。
希望对您有所帮助。
【讨论】:
谢谢。我在其他地方找到了一个建议gem uninstall mysql2
的修复程序,但它不起作用。用bundle exec
强制它从捆绑包中删除它对我来说很重要。
@mrrogers 是的,这让我好几次了。 bundle exec
就像它自己的环境。同样令人困惑的是人们何时使用gem install
和sudo 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