2010-06-28 81 views
15

试图用mysql启动一个新的Rails 3 beta 4应用程序....运行OS X Snow Leopard。与以前版本的Rails相比,我对MySQL没有任何问题。但现在,当我开始了Rails 3应用程序,我得到当我点击“关于您的应用环境”了Rails的index.html启动屏幕上出现以下错误:Rails 3 Mysql问题

未定义的方法`初始化”对于MySQL:类

+0

你的Gemfile里有'gem'mysql''吗? – 2010-06-28 01:41:03

+0

当官方发布出来时,这个问题最终会让我失望,对我来说,这只是我使用测试版时的一个问题。 – 2010-10-01 21:32:25

回答

16

将您的Gemfile更改为使用'mysql2',它是一个更现代的驱动程序,并具有其他人提到的更好的功能。

默认情况下,新的Rails应用程序使用mysql2 gem。

+5

确保你也改变了你的database.yml文件来使用“adapter:mysql2”而不是“adapter:mysql”,否则你会得到一个mysql2 gem未被加载的错误。 – nikz 2011-03-23 03:18:06

+3

我还需要安装一个mysql2 gem吗?这看起来很接近。我得到了以下错误:耙中止! dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle,9):库未加载:libmysqlclient.18.dylib 引用自:/ Library/Ruby/Gems /1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle 原因是:image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle /Users/chris/rails_projects/sienab/Rakefile:4 (请参阅使用--trace运行任务完整跟踪) – chris 2011-06-02 11:49:07

+0

如果您需要准备好的语句,则可以使用Sequel gem,因为MySql2 gem目前还不支持。 https://github.com/jeremyevans/sequel – 2015-05-01 23:41:39

3

我最终从mysql gem切换到ruby-mysql gem,工作。

+1

它真的有效~~ mysql.gem和mysql2.gem不工作... – lkahtz 2011-02-12 15:58:07

+1

这不是一个真正的解决方案,因为您正在改变使用Ruby而不是本地代码(稍慢)。你应该换成mysql2 gem,正如nzkoz所示。 – nikz 2011-03-23 03:30:55

1

我想我已经找到了解决问题的办法。在我的情况下,问题是MySQL的宝石尚未使用捆绑器正确安装。我这样做的时候:

捆绑安装mysql(noobish错误)

所有宝石去mysql目录,但后来我检查了捆绑宝石 的文档和这样做:

捆绑安装bundler_files(知道宝石在未来的地方)

一切看起来几乎没问题,只是当安装mysql gem时我有一些错误。 我注意到,这是因为我的文件夹路径“/ home/pawel/Aptana Studio Workspace/myrails_app”

如果您的文件夹路径中有空格,则此gem将无法正确安装,并且稍后会将路径修改为一个没有空格,并尝试安装mysql的宝石,它不会显示任何错误,但安装将被损坏,因为你将有一些额外的文件夹中有一些文件等,所以

DELETE创建者捆绑创业板文件夹并重新安装带有此命令的GEM:

捆绑安装

解决了这个问题。

2

为了简单的使用,这是典型的(连接,查询,迭代结果),我发现mysql2 gem比mysql或ruby-mysql gem快得多,并自动将值转换为正确的类型。它在Snow Leopard上完美安装,而我无法获得MySQL Gem的工作。在http://github.com/brianmario/mysql2

7

我碰到了同样的问题

更多信息(ROR 3,OSX 10.6,MySQL的2.8.1宝石)。

您可以使用内部评级法来排除回报率:

irb 
require 'rubygems' 
require 'mysql' 
db = Mysql.connect('hostname', 'username', 'password', 'database') 

如果以上不工作,你可能想尝试删除mysql的宝石,并重新安装它。我遇到一个帖子说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验证工作是否正常,然后重新启动导轨。

+0

即使对i386拱也适用:uname -a达尔文iMac-LZ.local 10.5.0达尔文内核版本10.5.0:星期五11月5日23:20:39 PDT 2010;根:XNU-1504.9。17〜1/RELEASE_I386 i386 – Vitalie 2010-12-07 23:25:15

+2

这样做后,我得到错误:'未定义的方法'连接'从/Users/sscirrus/.rvm/rubies-1.9.2-p0/bin/irb:16 :在

'。如何解决这个问题? – sscirrus 2010-12-31 19:13:57

0

升级到Snow Leopard后,我遇到了同样的问题。上安装MySQL的宝石,我有一大堆有关文件,错误的话,上运行的服务器:

undefined method `init' for Mysql:Class 

我也有与其它宝石有些相似,但无关的问题,尤其是那些有C组分需要进行编译,例如RedCloth和hpricot:

Unable to compile native extensions 

这些错误与基本64架构中的本机扩展有关。该解决方案是三倍:

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

现在一切都好了。

1

我认为会发生什么是mysql gem无法加载mysql动态库(应该由本地MySQL安装提供)。为了测试是否发生这种情况,这样做

$ irb 
1.9.2p320 :001 > require 'mysql_api' 
=> true 
1.9.2p320 :002 > 

如果无法加载这个低水平mysql_api,(这实际上提供的功能给mysql宝石),它会给你一些可能有用的错误。通常它无法找到动态库。为了解决这个问题,我发现一对夫妇的解决方案:

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