ems*_*son 16 ruby mysql gem rubygems osx-snow-leopard
我在尝试安装Ruby mysql gem驱动程序时遇到了问题.
我最近升级到Snow Leopard并完成了MySQL的Hivelogic手动安装.这一切似乎工作正常,因为我可以从命令行访问mysql并对数据库进行更改.
我的问题是,如果我现在使用
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我明白了:
rake aborted!
uninitialized constant MysqlCompat::MysqlRes
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
现在看来我的mysql gem工作不正常,因为我可以使用Python驱动程序(我编译到)从Python访问MySQL.因此,我尝试使用以下来自此站点的命令重建gem:http://techliberty.blogspot.com/,(顺便说一下,我使用的是最新的Intel MacBook Pro):
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)
这个编译虽然我得到没有文档的定义:
Building native extensions. This could take a while...
Successfully installed mysql-2.8.1
1 gem installed
Installing ri documentation for mysql-2.8.1...
No definition for next_result
No definition for field_name
...
Run Code Online (Sandbox Code Playgroud)
当我的mysql_config位于正确的位置时,我有点难过:
/usr/local/mysql/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)
我从我的系统中删除了mysql gem的所有其他实例.
任何建议将不胜感激.非常感谢.
PS我看到这个上一篇文章未初始化的常量MysqlCompat :: MysqlRes(使用mms2r gem),但它似乎不适用于我的版本.
Ste*_*nin 18
基本上问题是无法找到动态库libmysqlclient.上述解决方案可行,但您需要在重建gem时或安装新版本的MySQL时重新应用它们.
另一种方法是将包含库的MySQL目录添加到动态加载路径中.将以下内容放在我的.bashrc文件中解决了这个问题:
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
Run Code Online (Sandbox Code Playgroud)
ems*_*son 10
好的,我终于解决了这个问题.
发生这种情况的原因是我安装了两个版本的Ruby.
这两个版本冲突,意味着当我尝试使用正确的ARCHFLAGS安装MySQL gem时,系统认为我使用的是不同版本的Ruby.
修复很简单:
使用正确的ARCHFLAGS重新编译MySQL gem:
sudo env ARCHFLAGS =" - arch x86_64"gem install --no-rdoc --no-ri mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config
一旦我完成了这一切,一切正常.希望它适合你.
乙
Ken*_*ang 10
经过几天摔跤这个问题后,我终于把它钉了起来.我做过的两件事让它发挥作用:
我有点惊讶#2只是史蒂文·钱宁提到的.
我使用Snow Leopard,并且只安装了1个MySQL(x86_64)5.5和1个红宝石(预装了Snow Leopard).
好吧,我是新手.经过一段时间的努力,因为以上都没有为我工作,我认为问题是由于我的"mysql"是64位安装而ruby是32位.检查这些命令
file `which mysql`
file `which ruby`
Run Code Online (Sandbox Code Playgroud)
两者都应匹配Mach-O 64位可执行x86_64或Mach-O 64位可执行i386.我安装了一个32位的mysql,从源代码和rails中重新安装了ruby,从那以后一直运行得很完美.我在Leopard顺便说一下.
归档时间: |
|
查看次数: |
11846 次 |
最近记录: |