2009-06-13 155 views
67

我使用我们在WWDC获得的光盘升级到Snow Leopard。Rails,MySQL和Snow Leopard

试图运行我的一些轨的应用程式,现在抱怨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还与雪豹轨工作?如果是这样,你的设置是什么,更好的是,我能做些什么来重现它?

回答

108

我刚刚经历了同样的痛苦去......这里是为我工作:从mysql.com

  • 运行以下命令

    1. 下载/安装64位的MySQL 5.1.37:
     
    
        sudo gem update --system 
    
        sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 
    

    我也卸载时候从我10.5天左右浮动所有MySQL的宝石,可能这样做,如果上述方法不为你工作:)

  • 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。

    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 
    

    有很多,我会从雪豹源建库和他们保持雨后春笋般冒出来。 MacPorts似乎没有足够的更新所有的库,所以我不想自己做。接下来:freetype(http://download.savannah.gnu.org/releases-noredirect/freetype/

    6

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

    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 
    

    希望能帮助别人。

    +1

    男人,感谢mysql.bundle上的领导。这在我的一台机器上烧毁了我。 – Scott 2009-08-29 22:49:59

    +0

    这帮了我,谢谢你! – 2010-02-08 15:07:55

    +1

    “我终于删除了mysql.bundle(我不知道这是干什么用的),它一切正常。”通过相同的逻辑,你可以尝试删除那个大的“mach_kernel”文件或那些“tmp”目录。从Apple安装的系统中删除东西不是一个好主意。要研究为什么首先出现在那里,然后决定是否可以删除。 – 2012-01-02 08:30:54

    10

    将64位重建为64位或安装64位版本非常重要,但您还需要确保您将64位版本的mysql gem的本地部分构建为好(如果您使用的是原始版本英特尔酷睿双核处理器)。

    这里是神奇的命令:

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

    应设置ARCHFLAGS如图所示,每当你做一个创业板安装与雪豹本地组件的上方。

    +0

    我有一个原始的Core Duo mac(第一代Macbook),所以没有64位CPU。你将如何修改你的这个架构的命令? – 2009-09-18 14:43:09

    +0

    对于32位Macbook或Macbook Pro,请安装常规x86版本的MySQL并使用以下命令: sudo env ARCHFLAGS =“ - arch i386”gem install mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config – 2009-09-18 14:48:01

    +0

    是的,如果你有第一代macbook,你应该在gem命令之前省略所有这些东西。 – Shebanator 2009-09-18 15:39:55

    1

    我有这个相同的问题,这是什么对我有用。

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

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

      sudo mysql_upgrade

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

      `gem list`.each_line {| line |系统'sudo gem install#{line.split.first}'}

    4. 卸载我安装的MySQL gems。

    5. 安装了MySQL宝石与

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

    就这样,一切似乎到目前为止是工作。 *敲木*

    2

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

    网状

    0

    我试过ARCHFLAGS伎俩多次与细微变化,但它从来没有为我工作。

    最后做了什么工作是切换回与雪豹安装的红宝石和宝石的版本。

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

    0

    我将$ MYSQL_HOME/bin中的mysql_config程序重命名为其他内容,以便gem安装程序的配置脚本无法找到它。尽管我使用的是libs选项,但是gem安装程序确实总是使用我的mysql安装中的编译设置,这是fat fat。但默认的ruby安装只有x86_64,因此gem的编译失败。重命名mysql_config程序后,下面的命令效果很好,并安装了宝石:

    sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql 
    
    0

    这篇文章解决了这个问题对我来说:)

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

    • 此前豹

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

      • 豹一个PPC机上:

        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

        一个Intel机器上

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

    0

    如果您正在使用RVM安装mysql的宝石,你需要使用下面的代码来安装它

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

    这种方法Leopard Server的工作对我来说,没有上述工作

    7

    如果您使用打包器,你可以使用“包配置”来设置适当的参数构建对MySQL像这样:

    bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 
    
    1

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

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

    我的bash的个人资料,这解决了这个问题对我来说。

    1

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

    请卸载现有的MySQL宝石(如果有的话):

    sudo gem uninstall mysql 
    

    找到 'mysql_config' 文件:

    find /usr -name 'mysql_config' 
    

    重新安装mysql宝石:

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

    备注:取代/usr/local/bin/与相应的mysql_config路径在步骤2中找到。同样在我的blog上。

    1

    伊恩·塞尔比谢谢了很多,但我不得不在sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    我安装到宝石的前部取出sudo和正在使用RVM我想请你不要使用sudo关键字。非常感谢。

    1

    我已经解决了这种方式:

    1. 安装mysql的dmg文件后 
    2. 束配置build.mysql --with-mysql的-配置=在/ usr /本地/ MySQL的/斌//mysql_config
    3. ENV ARCHFLAGS = “ - 拱x86_64的”
    4. 捆绑安装
    1

    有过Rails中几年休息,我只花了一些添建立我的开发环境。所以我想我会创建一个关于如何在SnowLeopard上安装最新版本的Rails 3,MySQL和RVM的教程,希望能够为其他人节省一些时间。

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

    1. 如果尚未安装,则安装XCode。我用了4.0.2。不幸的是,这已经被苹果撤回,但可能在互联网上的其他地方提供。版本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安装版本红宝石(例如1.9.2)的,basic usage instructions are here

      user$ rvm install 1.9.2 
      user$ rvm use 1.9.2 
      
    4. Create a gemset对于安装在第2步中的RVM红宝石(x为版本号)。

      user$ rvm gemset create rails30x 
      user$ rvm [email protected] 
      
    5. 安装Rails 3.0.x(x是版本号)。

      user$ gem install rails -v 3.0.x. 
      
    6. Download and install the MySQL 5.5.x package, the startup item, and the preferences pane。所有这些都包含在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. Install the mysql2 gem.(截至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. 启动应用程序,并检查 “关于应用程序的环境。”一切都应该正常工作。