创建 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 时延迟符号绑定失败的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10 GM:XCUIScreen.main.screenshot() 因“dyld:惰性符号绑定失败”而崩溃
dyld:惰性符号绑定失败:找不到符号:_objc_loadWeak