68

我使用我们在 WWDC 获得的光盘升级到了 Snow Leopard。

尝试运行我的一些 Rails 应用程序现在抱怨 sql

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)

我可以发誓我以前修过一次。问题是

sudo gem install mysql

不起作用并给出错误:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

有没有人让mysql在雪豹上使用rails?如果是这样,你的设置是什么,更好的是,我能做些什么来重现它?

4

18 回答 18

107

我刚刚经历了同样的痛苦......这对我有用:

  1. 从 mysql.com 下载/安装 64 位 MySQL 5.1.37
  2. 运行以下命令:
    须藤宝石更新--系统

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

我还卸载了我 10.5 天以来漂浮的所有 mysql gem,如果上述方法不适合您,可能会这样做:)

于 2009-08-28T21:51:56.233 回答
10

将 mysql 重新构建为 64 位或安装 64 位版本很重要,但您还需要确保将 mysql gem 的本机部分也构建为 64 位(如果您使用的是原始 Intel Core Duo mac 之一,则不适用)。

这是魔术命令:

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

每当您在 Snow Leopard 上使用本机组件进行 gem 安装时,您都应该如上所示设置 ARCHFLAGS。

于 2009-08-28T05:25:39.210 回答
7

如果您使用捆绑器,您可以使用“bundle config”为 mysql 设置正确的构建参数,如下所示:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
于 2010-08-23T18:30:27.933 回答
6

我为此奋斗了很长时间,终于让它在雪豹上工作了。我最终从源代码安装了 Ruby、RubyGems 和 MySQL(请参阅安装 Ruby 和 RubyGems 的Hivelogic 教程。MySQL 教程在底部链接)。我终于安装了gem,但我仍然得到

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap

我终于删除了mysql.bundle(我不知道这是为了什么),一切都奏效了。

sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle

希望对某人有所帮助。

于 2009-08-06T21:10:26.603 回答
4

我已经多次看到这个问题。几乎每次我在机器上构建 mysql 时。我认为,您必须将 mysqlconfig 作为 gem install 命令的一部分传递。

sudo gem install mysql -- --with-mysql-config=/your/mysql/config

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby
--with-mysql-config

请记住,您需要 mysql 开发文件才能构建此 gem。

于 2009-06-13T23:59:11.373 回答
2

安装雪豹后,我无法让我的配置正常工作。我在http://www.mamp.info找到了 MAMP,它捆绑了 Apache、PHP 和 MySQL。你像应用程序一样安装它,它就可以工作。也许值得一试,而且它是免费的。

于 2009-09-14T10:50:36.030 回答
1

我想我会在这里回答我自己的问题。似乎问题不在 mysql 中,而在 mysql ruby​​ 绑定中。我想通了,因为当我连接 Querius(我的 mysql gui)时,它能够连接。

以下是如何从源代码构建修复绑定:

cd /tmp
wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz
tar xvfz ruby-mysql-0.2.6.tar.gz
cd ruby-mysql-0.2.6
./configure
make
sudo make install

我必须从 Snow Leopard 上的源代码构建大量库,并且它们不断涌现。MacPorts 似乎没有对所有库进行足够的更新,所以我要自己做。接下来:freetype(http://download.savannah.gnu.org/releases-noredirect/freetype/

于 2009-06-14T04:19:37.287 回答
1

我按照这篇文章中的说明进行操作(http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/),现在一切正常。

记住要注意他的命令中的拼写错误以安装 mysql 驱动程序。

于 2009-07-15T12:39:13.470 回答
1

我有同样的问题,这对我有用。

  1. 安装 Snow Leopard 和 64 位 MySQL DMG。

  2. 创建 /etc/my.cnf 以指向我以前的 MySQL 数据目录(如此所述)并运行

    sudo mysql_upgrade.

  3. 打开 IRB 并使用(通过 blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html)重新安装我的所有 gem。

    `宝石列表`.each_line {|line| 系统'sudo gem install #{line.split.first}'}

  4. 卸载了我安装的 MySQL gem。

  5. 安装了 MySQL gem

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

有了这个,到目前为止一切似乎都在工作。*敲木头*

于 2009-08-28T22:38:54.533 回答
1

设置 ARCHFLAGS 和传递 --mysql-config=... 的说明似乎不足以在 Snow Leopard 上为我解决这个问题。除了这样做,我还补充说:

DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

到我的 bash 个人资料,这为我解决了。

于 2010-12-27T18:45:18.240 回答
1

如果您更喜欢 home brew,而不是手动安装 MySQL。

卸载现有的 mysql gem(如果有的话):

 sudo gem uninstall mysql 

找到“mysql_config”文件:

 find /usr -name 'mysql_config' 

重新安装 mysql gem:

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

注意:替换为步骤 2 中找到/usr/local/bin/的相应mysql_config路径。也在我的博客上

于 2011-01-17T03:47:25.997 回答
1

伊恩塞尔比非常感谢你,但我不得不sudo从前面删除sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我正在安装到 gemset 并且正在使用 rvm,我认为它要求您不要使用 sudo 关键字。非常感谢。

于 2011-02-04T00:41:43.143 回答
1

我已经这样解决了:

  1. 安装mysql的dmg文件后  
  2. 捆绑配置 build.mysql --with-mysql-config=/usr/local/mysql/bin//mysql_config
  3. 环境 ARCHFLAGS="-arch x86_64"
  4. 捆绑安装
于 2011-04-04T13:19:40.440 回答
1

在离开 Rails 几年后,我只是花了一些时间来设置我的开发环境。所以我想我会创建一个关于如何在 SnowLeopard 上安装最新版本的 Rails 3、MySQL 和 RVM 的教程,以希望为我所在位置的其他人节省一些时间。

它于 2011 年 8 月 21 日开始工作,使用 Rails 3.0.10、MySQL 5.5.15 和 RVM 1.7.2。它应该适用于未来的 Rails 3.0.x、MySQL 5.5.x 和 RVM 1.7.x 版本。

  1. 如果尚未安装,请安装 XCode。我用的是 4.0.2。不幸的是,这已被 Apple 撤回,但可能在 Internet 上的其他地方可用。3.2.x 版可从 Apple 免费下载,但我没有使用本教程对其进行测试,它可能也可以。

  2. 安装rvm

    user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
    user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    user$ source .bash_profile
    
  3. 在 rvm 中安装一个 Ruby 版本(例如 1.9.2),基本使用说明在这里

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  4. 为步骤 2 中安装的 rvm ruby​​ 创建 gemset(x 是版本号)。

    user$ rvm gemset create rails30x
    user$ rvm 1.9.2@rails30x
    
  5. 安装 Rails 3.0.x(x 是版本号)。

    user$  gem install rails -v 3.0.x.
    
  6. 下载并安装 MySQL 5.5.x 包、启动项和首选项窗格。所有这 3 个都包含在 DMG 安装文件中。同时安装 MySQL WorkBench。

    找到 /usr/local/mysql-version-name/support-files(插入正确的 MySQL 目录名称)并编辑 mysql.server(具有 root 权限)。在第 46 行附近找到如下行:

    basedir=
    datadir=
    

    并将它们更改为读取(插入正确的 MySQL 目录名称):

    basedir=/usr/local/mysql-version-name
    datadir=/usr/local/mysql-version-name/data
    

    保存文件。MySQL 现在可以从首选项窗格启动。

    要使 rails 3 能够使用 mysql,请安装 mysql2 gem(请参阅下一步)。首先,您需要将 设置 DYLD_LIBRARY_PATH为包含 MySQL 库目录。为此,请编辑您的主文件夹中的 ~/.bash_profile 并包含以下内容(插入正确的 MySQL 目录名称):

    export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
    

    如果在 DYLD_LIBRARY_PATH 中不包含目录,则会出现一条关于找不到库的消息,并且服务器将中止。

  7. 安装mysql2宝石。(截至 2011 年 5 月,版本 0.2.7 是 Rails 3.0.x 的最新工作版本)。

    user$ gem install mysql2 -v 0.2.7 
    
  8. 创建一个rails应用程序,它是对应的数据库(appname_development)。

    user$ rails new appname
    
  9. 将此添加到应用程序的 Gemfile:gem 'mysql2', "0.2.7"

  10. 将此添加到应用程序的 database.yml:

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      host: localhost
    
  11. 启动应用程序并检查“关于您的应用程序的环境”。一切都应该正常工作。

于 2011-08-21T15:09:09.863 回答
0

我多次尝试了 archflags 技巧,但略有不同,但它从未对我有用。

最终起作用的是切换回安装雪豹的 ruby​​ 和 gem 版本。

我已经构建并安装了我自己的版本,除了这个之外,它在各个方面都对我有用。由于其他一切似乎都运行良好,我不禁猜测 mysql 插件中有一些时髦的假设。无论如何,我所做的只是将 /usr/bin 再次切换到我的路径中。我已经在 /usr/local/ruby-1.8.7 和 /usr/local/ruby-1.9.1 中安装了 ruby​​,以便能够轻松切换。我想我会提到它,因为 archflags 解决方案似乎适用于许多人,但并非全部。

于 2009-11-02T08:00:15.627 回答
0

我将 mysql_config 程序从 $MYSQL_HOME/bin 重命名为其他名称,因此 gem 安装程序中的配置脚本无法找到它。即使我使用的是 libs 选项,gem 安装程序确实总是使用我的 mysql 安装中的编译设置,它是胖二进制文件。但是默认的 ruby​​ 安装只有 x86_64,因此 gem 的编译失败。重命名 mysql_config 程序后,以下命令运行良好并安装了 gem:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
于 2010-03-04T13:01:19.150 回答
0

这篇文章为我解决了这个问题:)

http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • 在豹之前

    sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • PPC 机器上的 Leopard:

      sudo env ARCHFLAGS="-arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • 英特尔机器上的 Leopard:

      sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • 雪豹(仅限英特尔):

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

于 2010-03-05T09:41:22.003 回答
0

如果您使用 RVM 安装 mysql gem,则需要使用以下代码来安装它

sudo env ARCHFLAGS="-arch x86_64" gem install mysql

这种方法在 Leopard Server 中对我有用,以上都不起作用

于 2010-05-19T23:43:00.813 回答