[英]Rails 3 Mysql Problems
尝试使用mysql启动新的Rails 3 beta 4应用程序....运行OS X Snow Leopard。 使用以前版本的Rails,我对MySQL没有任何问题。 但是现在当我启动Rails 3应用程序时,当我在Rails index.html启动屏幕上单击“关于您的应用程序环境”时,我收到以下错误:
mysql的未定义方法`init':Class
更改您的Gemfile以使用'mysql2',它是一个更现代的驱动程序,并具有其他人提到的更好的功能。
新的Rails应用程序默认使用mysql2 gem。
我遇到了同样的问题(RoR 3,OSX 10.6,mysql 2.8.1 gem)。
您可以使用irb来排除RoR:
irb
require 'rubygems'
require 'mysql'
db = Mysql.connect('hostname', 'username', 'password', 'database')
如果上述方法不起作用,您可能想尝试删除mysql gem并重新安装它。 我遇到一个帖子说bundle install
可能会破坏安装而不会显示错误。
sudo gem uninstall mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
通过irb
验证工作正常,然后再次启动rails。
我最终从mysql gem切换到ruby-mysql gem,工作。
对于简单的用法,这是典型的(连接,查询,迭代结果),我发现mysql2 gem比mysql或ruby-mysql gems快得多,并且自动将值转换为正确的类型。 并且它完全安装在Snow Leopard上,而我无法让mysql gem工作。
有关更多信息,请访问http://github.com/brianmario/mysql2
我想会发生的是mysql gem无法加载mysql动态库(应该由本机MySQL安装提供)。 要测试是否发生这种情况,请执行此操作
$ irb
1.9.2p320 :001 > require 'mysql_api'
=> true
1.9.2p320 :002 >
如果它无法加载这个低级别的mysql_api
(实际上它为mysql
gem提供了这些功能),它将为你提供一些可能有用的错误。 通常它无法找到动态库。 为了解决这个问题,我找到了几个解决方案:
从http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard ,执行此操作
用于系统范围的安装
sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
或本地安装
env ARCHFLAGS="-arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
然后从http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/放入.bash_profile
:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
我想我找到了问题的解决方案。 在我的情况下,问题是没有使用捆绑器正确安装mysql gem。 当我这样做时:
捆绑安装mysql(noobish错误)
所有的宝石都去了mysql目录,但后来我检查了bundler gem的文档,并做了这样的事情:
bundle install bundler_files(知道未来宝石的位置)
一切看起来几乎没有,除了当mysql gem安装时我遇到了一些错误。 我注意到这是因为我的文件夹路径“/ home / pawel / Aptana Studio Workspace / myrails_app”
如果你的文件夹路径中有空格,这个gem将无法正确安装,稍后当你修改一个没有空格的路径并尝试安装mysql gem WOW显示任何错误,但安装将被破坏,因为你会有一些额外的文件夹那里有一些文件等等
删除BUNDLER创建的GEM文件夹并使用此命令重新安装GEMS:
捆绑安装
这解决了这个问题。
您可以尝试切换到mysql2 gem,它应该为您解决所有问题。 请参阅: https : //github.com/brianmario/mysql2/
升级到Snow Leopard后,我遇到了同样的问题。 在安装MySQL gem时,我收到了一些关于文档的错误,然后,在运行服务器时:
undefined method `init' for Mysql:Class
我还与其他宝石有一些相似但无关的问题,特别是那些需要编译的C组件,如RedCloth和hpricot:
Unable to compile native extensions
这些错误与base 64架构中的本机扩展有关。 解决方案有三个:
现在一切都好了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.