【问题标题】:MySQL Gem failure: MysqlCompat::MysqlRes on Snow LeopardMySQL Gem 失败:雪豹上的 MysqlCompat::MysqlRes
【发布时间】:2011-02-23 16:03:48
【问题描述】:

我正在尝试让 mysql gem 工作......它只是不想。每次我执行 rake db:migrate 时,我都会得到

uninitialized constant MysqlCompat::MysqlRes

我已经从这个磁盘映像安装了 mysql:mysql-5.5.9-osx10.6-x86_64.dmg

我已经使用 infamous archflags 设置运行 gem 安装:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我使用的 ruby​​ 版本是 Snow Leopard 的默认版本:

[~/sites/testdb]$ file `which mysql`
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
[~/sites/testdb]$ file `which ruby`
/usr/bin/ruby: Mach-O universal binary with 3 architectures
/usr/bin/ruby (for architecture x86_64):    Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386):  Mach-O executable i386
/usr/bin/ruby (for architecture ppc7400):   Mach-O executable ppc

我的 database.yml 非常简单:

development:
  adapter: mysql
  host: 127.0.0.1
  database: testdb
  username: root
  password: 

任何帮助将不胜感激。

【问题讨论】:

    标签: mysql ruby-on-rails gem


    【解决方案1】:

    您可以轻松解决问题。

    如果你不使用 rvm:

    sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/lib/mysql_api.bundleruby
    

    如果你使用 rvm:

    install_name_tool -change libmysqlclient.16.dylib usr/local/mysql/lib/libmysqlclient.16.dylib [YOUR_GEMSET_PATH]/gems/mysql-2.8.1/lib/mysql_api.bundle
    

    【讨论】:

      【解决方案2】:

      上周我在博客上写过这个:MySQL 5.5 on Mac OS X

      我使用install_name_tool 的替代解决方案是在您的shell 启动文件中设置DYLD_LIBRARY_PATH。这样做的好处是您只需执行一次,而如果您使用 install_name_tool,您将每次都重复此操作以重新安装或升级 gem。

      mysql2 gem 会出现同样的问题,但错误消息略有不同。问题是libmysqlclient 库是如何构建的。它不包含完整路径,因此与它链接的任何内容都无法在运行时找到它。

      【讨论】:

        【解决方案3】:

        我遇到了同样的错误。但是,在我的机器上,当我的机器上还有 mysql 5.1 时构建了 mysql gen。现在,在升级到 MySQL 5.5 后,原始构建 /usr/local/mysql/lib/libmysqlclient.16.dylib 引用的 dyld 文件不再存在,并被文件 /usr/local/mysql/lib/libmysqlclient.18.dylib 替换。

        完全重建mysql gem 修复的东西,即

        gem uninstall mysql
        gem install mysql
        

        【讨论】:

          【解决方案4】:

          您可以尝试使用mysql2 gem,它可能不会遇到同样的问题。

          我发现使用MacPortsbrew 中的rubymysql 通常会更好,这样可以将所有内容保持在同一页面上,并且不会与系统Ruby 混淆。

          OS X 附带的 MySQL 版本可能与您安装的不匹配,或者 gem 安装程序可能对使用哪个配置程序感到困惑。确保 mysql_config 返回正确的路径。

          【讨论】:

            猜你喜欢
            • 2011-12-15
            • 1970-01-01
            • 2011-08-04
            • 1970-01-01
            • 1970-01-01
            • 2010-12-27
            • 1970-01-01
            • 2010-11-24
            • 2010-11-22
            相关资源
            最近更新 更多