【问题标题】:Rails 3 Mysql ProblemsRails 3 Mysql问题
【发布时间】:2010-06-28 01:38:56
【问题描述】:

尝试使用 mysql 启动一个新的 Rails 3 beta 4 应用程序.... 运行 OS X Snow Leopard。对于以前版本的 Rails,我对 MySQL 没有任何问题。但是现在当我启动 Rails 3 应用程序时,当我在 Rails index.html 启动屏幕上单击“关于您的应用程序环境”时,会出现以下错误:

Mysql:Class 的未定义方法 `init'

【问题讨论】:

  • 你的 Gemfile 中有 gem 'mysql' 吗?
  • 这个问题在正式版出来后就解决了,对我来说这只是我使用测试版时的问题。

标签: mysql ruby-on-rails


【解决方案1】:

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

新的 Rails 应用程序默认使用 mysql2 gem。

【讨论】:

  • 确保您还更改了 database.yml 文件以使用“适配器:mysql2”而不是“适配器:mysql”,否则您将收到有关未加载 mysql2 gem 的错误。
  • 我还需要安装 mysql2 gem 吗?这看起来很近。我收到以下错误:rake 中止! 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 原因:找不到图像 - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle /Users/chris /rails_projects/sienab/Rakefile:4(通过使用 --trace 运行任务查看完整跟踪)
  • 如果你需要准备好的语句,你可以使用 Sequel gem,因为 MySql2 gem 还不支持它。 github.com/jeremyevans/sequel
【解决方案2】:

我遇到了同样的问题(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。

【讨论】:

  • 这甚至适用于 i386 arch:uname -a Darwin iMac-LZ.local 10.5.0 Darwin Kernel Version 10.5.0:Fri Nov 5 23:20:39 PDT 2010;根:xnu-1504.9.17~1/RELEASE_I386 i386
  • 执行此操作后,我收到错误:undefined method 'connect' for Mysql:Class from /Users/sscirrus/.rvm/rubies/ruby-1.9.2-p0/bin/irb:16:in <main>。如何解决这个问题?
【解决方案3】:

我最终从 mysql gem 切换到 ruby​​-mysql gem,成功了。

【讨论】:

  • 这并不是真正的解决方案,因为您正在改用 Ruby 而不是本机代码(有点慢)。您应该按照 nzkoz 的建议切换到 mysql2 gem。
【解决方案4】:

对于典型的简单用法(连接、查询、迭代结果),我发现 mysql2 gem 比 mysql 或 ruby​​-mysql gem 快得多,并且自动将值转换为正确的类型。它完美地安装在雪豹上,而我无法让 mysql gem 工作。

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

【讨论】:

    【解决方案5】:

    我想我已经找到了问题的解决方案。在我的情况下,问题是没有使用 bundler 正确安装 mysql gem。当我这样做时:

    捆绑安装mysql(noobish错误)

    所有 gem 都进入了 mysql 目录,但后来我检查了 bundler gem 的文档 并做到了:

    bundle install bundler_files(以了解 gems 在未来的位置)

    除了安装 mysql gem 时出现一些错误之外,一切看起来都差不多。 我注意到这是因为我的文件夹路径“/home/pawel/Aptana Studio Workspace/myrails_app”

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

    删除由 Bundler 创建的 GEM 文件夹并使用此命令重新安装 GEMS:

    捆绑安装

    这解决了问题。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        我认为发生的情况是 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 
        

        【讨论】:

          【解决方案8】:

          升级到 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。它似乎是在一个目录中安装 gems,然后在另一个目录中找到它们。这修复了所有原生架构 base64 错误,但 MySQL gem 仍然失败。
          3. 我删除了 MySQL 并将其降级到 5.1 版。这解决了 MySQL gem 问题。

          现在一切都好起来了。

          【讨论】:

            猜你喜欢
            • 2011-04-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-29
            • 2011-09-12
            • 2011-09-13
            相关资源
            最近更新 更多