创建 ruby​​ db 时延迟符号绑定失败

Posted

技术标签:

【中文标题】创建 ruby​​ db 时延迟符号绑定失败【英文标题】:Lazy symbol binding failed when creating ruby db 【发布时间】:2013-02-23 22:41:50 【问题描述】:

我正在尝试在 Rails 上安装 ruby​​,到目前为止,所有内容都已安装,但是当我尝试使用 rake db:create 创建数据库时,我收到了一个奇怪的错误:

dyld:惰性符号绑定失败:找不到符号:_mysql_get_client_info 引用自:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle 预期在:平面命名空间

dyld:找不到符号:_mysql_get_client_info 引用自:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle 预期在:平面命名空间

跟踪/BPT 陷阱:5

我正在开发 osx 山狮最新更新。有人有适合我的解决方案吗?

【问题讨论】:

【参考方案1】:

你可以试试这个。

sudo gem install mysql2 — –with-mysql-config=/usr/local/mysql/bin/mysql_config

请务必使用您的位置修改 mysql 配置路径。

您可以使用以下命令确定这一点。

locate mysql_config

利用上面命令给出的路径。

【讨论】:

mysql_config 路径应该去哪里?我必须使用我已经从 sql 网站 (mysql-5.5.29-osx10.6-x86) 下载的 sql 链接还是使用 gem 安装的链接? 当我运行上述命令时,我得到 ERROR: could not find gem — local or in a repository 错误: could not find gem –with-mysql-config=/usr/local/mysql/bin/ mysql_config 本地或存储库中 当我运行 locate mysql_config 时,我收到下一条消息:警告:定位数据库 (/var/db/locate.database) 不存在。 ehm 但是我已经从我通常使用的 mysql 网站安装了一个 mysql 服务器? 你看过这篇文章吗? ***.com/questions/5682386/mysql-gem-for-ruby-on-rails 请注意问题中列出您的确切错误的 cmets。 在上面的代码中需要注意的一点,它是sudo gem install myslq2 "dash dash space dash dash" 等等。我花了很长时间才弄清楚 mysql。这就是为什么您收到“错误:无法在本地找到 gem”【参考方案2】:

消息告诉您链接错误的版本 32 和 64

在 OSX 上,您可以看到安装的 mysql 上的所有版本

cd /usr/local/

并在 /usr/local/mysql-xxxx/bin/mysql_config 中找到正确的配置

在我的情况下是:

gem uninstall mysql2
sudo gem install mysql2 -- 
--with-mysql-config=/usr/local/mysql-5.5.27-osx10.6-x86_64/bin/mysql_config

这里讨论过:https://www.ruby-forum.com/topic/1440086

【讨论】:

【参考方案3】:

关于这个有很多问题,至少有同样多的答案在某些时候有效,但在其他时候无效。在尝试了大多数之后,我注意到 gem 是 64 位的,而 mysql 安装是 32 位的。

修复它:

安装64位mysql 在 /usr/local 中设置符号链接以指向 64 位版本 在您的配置文件中设置 PATH 和 DYLD_LIBRARY_PATH 以包含正确的版本 卸载 mysql2 gem 安装 mysql2 gem ruby 现在可以很好地与 mysql 配合使用!

我没有包含确切的代码,因为这往往会因您的环境而异。

【讨论】:

【参考方案4】:

我在这个问题上遇到了困难。我尝试了上面所有的答案,所以我无法确定是什么组合导致了修复。我已经安装了 mysql 并从 mysql 的网站重新安装。按照下面的方法,它终于开始工作了。

这是在 Mavericks 上使用 rails 4 并安装了 brew

brew install mysql

我不推荐这个过程 .. 只是注意到它在经过数小时的挫折后对我有用。

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo gem uninstall mysql
gem uninstall mysql2
gem install mysql
gem install mysql2

【讨论】:

这对我来说也适用于运行 ruby​​ 2.3,通过自制软件安装的 mysql56【参考方案5】:

您需要安装 64 位 MySql 服务器。不要忘记重新安装 mysql gem。

【讨论】:

【参考方案6】:

由于某种原因,我安装了两个版本的 mysql(32 位和 64 位)。

确保您的 $MYSQL 环境变量(很可能在 ~/.bash_profile 或 ~/.profile 中找到)指向 64 位版本。

如其他答案所述,在安装 gem 时,请确保指向正确的 mysql 安装。

【讨论】:

【参考方案7】:

我有同样的问题。 mysql2版本是0.4.9,降级到0.4.5问题解决了

【讨论】:

以上是关于创建 ruby​​ db 时延迟符号绑定失败的主要内容,如果未能解决你的问题,请参考以下文章

通过延迟绑定创建服务实例失败

PHP延迟静态绑定

Xcode 10 GM:XCUIScreen.main.screenshot() 因“dyld:惰性符号绑定失败”而崩溃

dyld:惰性符号绑定失败:找不到符号:_objc_loadWeak

dyld:惰性符号绑定失败:找不到符号:___emutls_get_address

Ruby 和 SWIG 与 CMake