rake db:mysql2 gem 的迁移错误 - 未加载库:libssl.1.0.0.dylib

Posted

技术标签:

【中文标题】rake db:mysql2 gem 的迁移错误 - 未加载库:libssl.1.0.0.dylib【英文标题】:rake db:migrate error with mysql2 gem - Library not loaded: libssl.1.0.0.dylib 【发布时间】:2018-12-18 05:47:12 【问题描述】:

运行 rake db:migrate 后出现以下错误

rake aborted!
LoadError: dlopen(/Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle, 9): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
/Users/scott/Google Drive/playground/myApp/myApp/config/application.rb:21:in `<top (required)>'
/Users/scott/Google Drive/playground/myApp/myApp/Rakefile:4:in `<top (required)>'

libssl 指的是什么?

【问题讨论】:

你能告诉我们代码示例吗,到目前为止你尝试了什么? 到目前为止,我已经在 *** 上尝试了大多数解决方案 - 1)将 mysql 添加到 PATH 2)安装更新的 gem 版本的 mysql2(0.4.10),因为我的安装说明要求 0.4.5 3)最后, 这个解决方案 - afshinm.name/2016/02/05/… @Gabbar 你想要什么代码示例,这有什么帮助?我正在从 github 安装一个 Rails 应用程序,我想为它做出贡献。 你在 Mac 上吗?也许使用brew,或者你喜欢的包管理器来安装libssl。 是的,在 Mac 上。也试过了,还是不行。 【参考方案1】:

首先卸载mysql2 gem:

gem uninstall mysql2

确保您安装了 openssl:

brew install openssl

它会打印出一些注释。我们对这部分感兴趣:

For compilers to find this software you may need to set:
LDFLAGS:  -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include

然后你可以像这样重新安装mysql2 gem:

gem install mysql2 -v 0.4.10 -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

你应该很高兴。

【讨论】:

谢谢,@michael。几周以来,我一直在尝试修复一个错误,而您提供的解决方案是有效的。真是一种解脱,伙计! 这是正确的答案,尽管我已经安装了 brew reinstall openssl 才能看到这些注释。 这对我来说几乎是正确的答案。安装后检查输出:For compilers to find openssl@1.1 you may need to set: export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" 在安装 mysql2 gem 时使用输出中列出的那些标志【参考方案2】:

以下修复解决了问题

   ==> cd /usr/local/Cellar/openssl/1.0.2s/lib/

==> sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib

【讨论】:

【参考方案3】:

所以我自己的问题的答案如下 - 在 *** 上的 5 个左右的其他解决方案中,这是唯一一个有效的解决方案:

brew install openssl

cd /usr/local/Cellar/openssl/1.0.1f/lib

sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/

这里有完整的解决方案 - https://mithun.co/hacks/library-not-loaded-libcrypto-1-0-0-dylib-issue-in-mac/

【讨论】:

不! :(。我按照这些命令在本地安装了 MySQL 8.0,但是我的项目需要使用 MySQL 5.7 版本。因此,这些命令完全搞砸了我的项目,需要完全重新安装 mysql.【参考方案4】:

在我的情况下,只需卸载和安装 mysql2 gem 就可以了

$ gem uninstall mysql2
$ bundle install 
> Fetching mysql2 0.4.10
> Installing mysql2 0.4.10 with native extensions

【讨论】:

【参考方案5】:

只有一个命令:

gem pristine mysql2

那我解决这个问题

【讨论】:

嗯,它在这里工作!这应该被标记为正确答案。简单但有效,就像所有事情都应该如此。谢谢。 嗯...我删除我的话,这里安装了 MySQL 8.0 版并窃听了所有内容。就我而言,我仍然需要使用 MySQL 5.7 版。【参考方案6】:

rbenv的用户:

 brew uninstall openssl
 brew install rbenv/tap/openssl@1.0

 gem uninstall mysql2
 gem install mysql2 -v '0.4.10' -- --with-opt-dir="$(brew --prefix rbenv/tap/openssl@1.0)"

【讨论】:

【参考方案7】:

对我来说,mysql2 的更高版本(在我的例子中是 0.5.3)需要 openssl1.1。这样做之后,它对我有用:

$  cp /usr/local/Cellar/openssl@1.1/1.1.1j/lib/libssl.1.1.dylib /usr/local/lib
$  cp /usr/local/Cellar/openssl@1.1/1.1.1j/lib/libcrypto.1.1.dylib /usr/local/lib

【讨论】:

以上是关于rake db:mysql2 gem 的迁移错误 - 未加载库:libssl.1.0.0.dylib的主要内容,如果未能解决你的问题,请参考以下文章

rake db:使用postgresql创建抛出“数据库不存在”错误

rake db:如果没有版本,迁移不能正常工作

尝试 rake db:migrate 时未在 rails 项目中选择数据库

安装 mysql2 gem 错误

markdown RAKE DB迁移命令

使用 rake db:migrate 迁移数据不会改变它