Rails,MySQL和Snow Leopard

我使用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与雪豹轨道上工作呢? 如果是这样,你的设置是什么,更好的是,我能做些什么来重现它?

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

  1. 从mysql.com下载/安装64位MySQL 5.1.37
  2. 运行以下命令:

     sudo gem更新 - 系统

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

我也卸载了所有从我的10.5天浮动的MySQL的gem,这可能会做到这一点,如果上述不适合你:)

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

这是魔术指令:

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

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

如果你使用的是Bundler,你可以使用“bundle config”为mysql设置正确的构build参数,如下所示:

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

我为此奋斗了很长时间,终于在雪豹的工作。 我最终从源代码安装了Ruby,RubyGems和MySQL(请参阅Hivelogic教程安装Ruby和RubyGems,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 

希望能帮助别人。

我多次看到这个问题。 几乎每次我在一台机器上build立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的开发文件,才能够build立这个gem。

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

网孔

我想我会在这里回答我自己的问题。 这似乎是问题不是在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 

有很多的图书馆,我将不得不从源代码build立雪豹,他们不断popup。 MacPorts似乎没有足够的更新所有的库,所以我打算自己做。 接下来:freetype( http://download.savannah.gnu.org/releases-noredirect/freetype/

我继续像这篇文章( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ )解释,现在一切正常。

请记住在他的命令中找出错误来安装mysql驱动程序。

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

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

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

    sudo mysql_upgrade

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

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

  4. 卸载我安装的MySQLgem。

  5. 安装了MySQL gem

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

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

如果你喜欢家酿 ,而不是手动安装MySQL。

取消安装现有的MySQL gem(如果有的话):

  sudo gem uninstall mysql 

find'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 

注意:/usr/local/bin/步骤2中find的相应的mysql_configpathreplace/usr/local/bin/ 。同样在我的博客上 。

Ian Selby非常感谢你,但是我必须从sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config前面删除sudo sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

我正在安装到一个gemset,我正在使用rvm,我想你不要使用sudo关键字。 非常感谢。

我已经这样解决了:

  1. 安装mysql的dmg文件后
  2. bundle config build.mysql –with-mysql-config = / usr / local / mysql / bin // mysql_config
  3. env ARCHFLAGS =“ – arch x86_64”
  4. 捆绑安装

从Railsrest了好几年,我花了一些时间来设置我的开发环境。 所以我以为我会创build一个关于如何在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。 不幸的是,现在苹果公司已经撤销了这个软件,但是可能在互联网上的其他地方也可以使用。 版本3.2.x是免费从苹果下载,但我没有testing与本教程,它可能也可以。

  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 创build一个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软件包,启动项目和偏好设置窗格 。 所有这些都包含在DMG安装文件中。 同时安装MySQL WorkBench。

    find/ usr / local / mysql-version-name / support-files(插入正确的MySQL目录名)并编辑mysql.server(以root权限)。 在第46行附近find这样的行:

     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中的目录,则会显示有关未find该库的消息,服务器将中止。

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

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

     user$ rails new appname 
  9. 添加到应用程序的Gemfile中:gem'mysql2 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. 启动应用程序并检查“关于您的应用程序的环境”。 一切都应该正常工作。

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

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

我的bashconfiguration文件,这解决了它对我来说。

我尝试了许多次微小的变化,但它从来没有为我工作的archflags技巧。

最后做的工作是切换回雪豹和gem版本安装雪豹。

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

我将mysql_config程序从$ MYSQL_HOME / bin重命名为其他内容,以便gem安装程序的configuration脚本无法find它。 尽pipe我使用的是libs选项,但是gem安装程序总是使用我的mysql安装中的编译设置,这是fat二进制文件。 但默认的ruby安装只有x86_64,因此gem的编译失败。 重命名mysql_config程序后,下面的命令工作得很好,并安装了gem:

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

如果您正在使用RVM安装mysql gem,则需要使用以下代码进行安装

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

这个方法在Leopard Server中为我工作,上面没有任何工作

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

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 ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

    • 英特尔机器上的豹:

      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