Rails 3 Mysql问题
尝试使用mysql启动新的Rails 3 beta 4应用程序….运行OS X Snow Leopard。 使用以前版本的Rails,我对MySQL没有任何问题。 但是现在当我启动Rails 3应用程序时,当我在Rails index.html启动屏幕上单击“关于您的应用程序环境”时,我收到以下错误:
mysql的未定义方法`init’:Class
将你的Gemfile更改为使用’mysql2’,它是一个更现代的驱动程序,并且具有其他人提到的更好的function。
新的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并重新安装它。 我遇到一个post说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
validation工作正常,然后再次启动rails。
我最终从mysql gem切换到ruby-mysql gem,工作。
对于简单的用法,这是典型的(连接,查询,迭代结果),我发现mysql2 gem比mysql或ruby-mysql gems快得多,并自动将值转换为正确的类型。 并且它完美地安装在Snow Leopard上,而我无法让mysql gem工作。
有关更多信息,请访问http://github.com/brianmario/mysql2
我想我找到了问题的解决方案。 在我的情况下,问题是没有使用捆绑器正确安装mysql gem。 当我这样做时:
捆绑安装mysql(noobish错误)
所有gem都去了mysql目录,但后来我检查了bundler gem的文档,并做了这个:
bundle install bundler_files(知道未来gem的位置)
一切看起来几乎没有,除了当安装mysql gem时我遇到了一些错误。 我注意到这是因为我的文件夹路径“/ home / pawel / Aptana Studio Workspace / myrails_app”
如果你的文件夹路径中有空格,这个gem将无法正确安装,稍后当你修改一个没有空格的路径并尝试安装mysql gem WOW DISPLAY ANY ERRORS,但是安装会被破坏,因为你会有一些额外的文件夹那里有一些文件等等
删除BUNDLER创建的GEM文件夹并使用此命令重新安装GEMS:
捆绑安装
这解决了这个问题。
您可以尝试切换到mysql2 gem,它应该为您解决所有问题。 请参阅: https : //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提供了这些function),它将为您提供一些可能有用的错误。 通常它无法找到动态库。 为了解决这个问题,我找到了几个解决方案:
从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
升级到Snow Leopard后,我遇到了同样的问题。 在安装MySQL gem时,我得到了一些关于文档的错误,然后,在运行服务器时:
undefined method `init' for Mysql:Class
我还与其他gem有一些相似但无关的问题,特别是那些需要编译的C组件,如RedCloth和hpricot:
Unable to compile native extensions
这些错误与base 64架构中的本机扩展有关。 解决方案有三个:
- 我重新安装了XCode 4.升级到Snow Leopard已经破坏了我的C编译器,所以有些gem无法编译。 这让我更近了一步,但没有解决问题。
- 我吹走了并重新安装了RVM。 它似乎是在一个目录中安装gem,并在另一个目录中找到它们。 这修复了每个本机架构base64错误,但MySQL gem仍然失败。
- 我删除并将MySQL降级到5.1版。 这解决了MySQL gem问题。
现在一切都好了。