MySQL Gem失败:雪豹上的MysqlCompat::MysqlRes
我正在努力让mysql gem正常工作。。。它只是不想。每次执行rake db:migrate时,我都会MySQL Gem失败:雪豹上的MysqlCompat::MysqlRes,mysql,ruby-on-rails,gem,Mysql,Ruby On Rails,Gem,我正在努力让mysql gem正常工作。。。它只是不想。每次执行rake db:migrate时,我都会 uninitialized constant MysqlCompat::MysqlRes 我已经从这个磁盘映像安装了mysql: 我使用臭名昭著的archflags设置运行了gem安装: sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/loca
uninitialized constant MysqlCompat::MysqlRes
我已经从这个磁盘映像安装了mysql:
我使用臭名昭著的archflags设置运行了gem安装:
sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
我使用的ruby版本是雪豹的默认版本:
[~/sites/testdb]$ file `which mysql`
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
[~/sites/testdb]$ file `which ruby`
/usr/bin/ruby: Mach-O universal binary with 3 architectures
/usr/bin/ruby (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386): Mach-O executable i386
/usr/bin/ruby (for architecture ppc7400): Mach-O executable ppc
My database.yml非常简单:
development:
adapter: mysql
host: 127.0.0.1
database: testdb
username: root
password:
任何帮助都将不胜感激 您可以尝试使用
mysql2
gem,它可能不会遇到相同的问题
我发现,使用ruby
和mysql
或者将所有内容保持在同一个页面上,而不是弄乱ruby系统通常会更好
OSX附带的MySQL版本可能与您安装的版本不匹配,或者gem安装程序不知道使用哪个配置程序。确保
mysql\u config
返回正确的路径。您可以轻松解决问题
如果不使用rvm:
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/lib/mysql_api.bundleruby
如果使用rvm:
install_name_tool -change libmysqlclient.16.dylib usr/local/mysql/lib/libmysqlclient.16.dylib [YOUR_GEMSET_PATH]/gems/mysql-2.8.1/lib/mysql_api.bundle
上周我在博客上写了这个: 我使用
install\u name\u tool
的另一种解决方案是在shell启动文件中设置DYLD\u LIBRARY\u路径。这样做的好处是只需执行一次,而如果使用install\u name\u tool
,则每次重新安装或升级gem时都会重复此操作
mysql2 gem也会有同样的问题,但错误消息略有不同。问题在于如何构建libmysqlclient
库。它不包含完整路径,因此任何与它链接的东西在运行时都找不到它。我遇到了相同的错误。不过,在我的机器上,mysql gen是在我的机器上还有mysql 5.1时构建的。现在,在升级到MySQL 5.5之后,原始版本/usr/local/MySQL/lib/libmysqlclient.16.dylib
引用的dyld文件不再存在,被一个文件/usr/local/MySQL/lib/libmysqlclient.18.dylib
替换
完全重建mysql gem修复的东西,即
gem uninstall mysql
gem install mysql