代码之家  ›  专栏  ›  技术社区  ›  Gordon Isnor

Rails 3 MySQL问题

  •  15
  • Gordon Isnor  · 技术社区  · 16 年前

    Trying to start a new Rails 3 beta 4 app with mysql.... Running OS X Snow Leopard. 对于以前版本的Rails,我对MySQL没有任何问题。但是现在,当我启动Rails 3应用程序时,当我在rails index.html启动屏幕上单击“关于您的应用程序环境”时,会收到以下错误:

    undefined method `init' for Mysql:Class

    8 回复  |  直到 11 年前
        1
  •  16
  •   NZKoz    15 年前

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

    New Rails applications use the mysql2 gem by default.

        2
  •  7
  •   Hobo    11 年前

    我遇到了同样的问题(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 然后再次启动轨道。

        3
  •  3
  •   Gordon Isnor    16 年前

    最后,我从MySQL宝石切换到红宝石MySQL宝石,工作。

        4
  •  2
  •   Damir Bulic    15 年前

    对于简单的用法,这是典型的(连接、查询、迭代结果),我发现mysql2 gem比mysql或ruby mysql gems快得多,并且自动将值强制转换为适当的类型。它在雪豹上安装得很好,但我无法让MySQL的宝石工作。

    更多信息 http://github.com/brianmario/mysql2

        5
  •  1
  •   Pawel Barcik    15 年前

    我想我已经找到了解决问题的办法。在我的例子中,问题是mysql gem没有使用bundler正确安装。当我这样做的时候:

    bundle安装mysql(noobish错误)

    所有gems都转到了mysql目录,但后来我检查了bundler gem的文档。 这样做:

    我注意到这是因为我的文件夹路径“/home/pawel/aptana studio workspace/myrails_app”

    如果文件夹路径中有空格,这个gem将无法正确安装,稍后当您将路径修改为一个没有空格的路径,并尝试安装mysql gem时,它将不会显示任何错误,但安装将被损坏,因为您将在那里有一些额外的文件夹和一些文件等。

    删除bundler创建的gem文件夹,然后使用以下命令重新安装gems:

    捆绑安装

    这解决了问题。

        6
  •  1
  •   z3cko    15 年前

    您可以尝试切换到mysql2 gem,它可以为您解决所有问题。见: https://github.com/brianmario/mysql2/

        7
  •  1
  •   highBandWidth    13 年前

    我认为发生的事情是mysql gem无法加载mysql动态库(应该由本机mysql安装提供)。要测试这是否发生,请执行此操作

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

    如果它不能加载这个低水平 mysql_api (它实际上为 mysql gem), it will give you some potentially useful errors. 通常它找不到动态库。为了解决这个问题,我找到了几个解决方案:

    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 
    
        8
  •  0
  •   superluminary    15 年前

    我升级到雪豹后也有同样的问题。On installing the MySQL gem, I got a bunch of errors about the documentation, then, on running the server:

    undefined method `init' for Mysql:Class
    

    我也有一些与其他宝石类似但不相关的问题,特别是那些有C组件需要编译的宝石,如红布和hpricot:

    Unable to compile native extensions
    

    1. 我重新安装了xcode 4。升级到SnowLeopard已经破坏了我的C编译器,所以一些gems无法编译。这让我更进一步,但没有解决问题。
    2. 我吹走了,重新安装了房车。它似乎在一个目录中安装gems,并在另一个目录中找到它们。这修复了所有本地体系结构base64错误,但mysql gem仍然失败。

    All is now well again.