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 

通过irbvalidation工作正常,然后再次启动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架构中的本机扩展有关。 解决方案有三个:

  1. 我重新安装了XCode 4.升级到Snow Leopard已经破坏了我的C编译器,所以有些gem无法编译。 这让我更近了一步,但没有解决问题。
  2. 我吹走了并重新安装了RVM。 它似乎是在一个目录中安装gem,并在另一个目录中找到它们。 这修复了每个本机架构base64错误,但MySQL gem仍然失败。
  3. 我删除并将MySQL降级到5.1版。 这解决了MySQL gem问题。

现在一切都好了。