我使用我们在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呢?如果是这样,你的设置是什么,更好的是,我该怎么做才能重现它?
答案 0 :(得分:108)
我只是经历了同样的痛苦......这对我有用:
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宝石,如果以上内容对你不起作用,可以这样做:)
答案 1 :(得分:10)
将mysql重建为64位或安装64位版本很重要,但您还需要确保将mysql gem的本机部分构建为64位(如果您使用的是原始Intel之一,则不适用Core Duo macs)。
这是神奇的命令:
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
每当您在Snow Leopard上使用本机组件进行gem安装时,您应该如上所示设置ARCHFLAGS。
答案 2 :(得分:7)
如果你正在使用bundler,你可以使用“bundle config”为mysql设置正确的构建参数,如下所示:
bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
答案 3 :(得分:6)
我和他一起战斗了很长时间,终于让它在Snow Leopard上工作了。我最终从源代码安装了Ruby,RubyGems和MySQL(参见Hivelogic tutorial安装Ruby和RubyGems .MQ教程在底部链接)。我终于安装了宝石,但我还是得到了
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
希望能有所帮助。
答案 4 :(得分: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 dev文件才能构建此gem。
答案 5 :(得分:2)
我在安装雪豹后让我的配置工作有问题。我在http://www.mamp.info找到了MAMP,它捆绑了Apache,PHP和MySQL。你像应用程序一样安装它,它只是工作。也许值得一试,它是免费的。
目
答案 6 :(得分: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/)
答案 7 :(得分: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版本。
安装XCode(如果尚未安装)。我用4.0.2。不幸的是,Apple现在已经撤回了这一消息,但可能会在互联网上的其他地方提供。版本3.2.x可以从Apple免费下载,但我没有用本教程测试它,它可能也有效。
安装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
在rvm basic usage instructions are here中安装Ruby版本(例如1.9.2)。
user$ rvm install 1.9.2
user$ rvm use 1.9.2
Create a gemset(x是版本号)。
user$ rvm gemset create rails30x
user$ rvm 1.9.2@rails30x
安装Rails 3.0.x(x是版本号)。
user$ gem install rails -v 3.0.x.
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中包含该目录,则会显示有关未找到库的消息 会出现,服务器会中止。
Install the mysql2
gem.(截至2011年5月,版本0.2.7是Rails 3.0.x的最新版本)。
user$ gem install mysql2 -v 0.2.7
创建一个rails应用程序,它是相应的数据库(appname_development)。
user$ rails new appname
将此添加到应用的Gemfile:gem 'mysql2', "0.2.7"
将此添加到应用程序的database.yml:
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: appname_development
pool: 5
username: username
password: pwd
host: localhost
启动应用并查看“关于您的应用环境”。一切都应该正常工作。
答案 8 :(得分:1)
我已经这样解决了:
答案 9 :(得分:1)
Ian Selby非常感谢你,但我必须从sudo
前面删除sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
我正在安装到gemset并使用rvm,我想你不要使用sudo关键字。非常感谢。
答案 10 :(得分:1)
如果你更喜欢回家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
注意:将/usr/local/bin/
替换为步骤2中找到的相应mysql_config
路径。同样在我的blog上。
答案 11 :(得分:1)
设置ARCHFLAGS和传递--mysql-config = ...的说明似乎不足以在Snow Leopard上为我解决这个问题。除此之外,我补充道:
DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
到我的bash档案,这解决了我。
答案 12 :(得分:1)
我有同样的问题,这对我有用。
安装Snow Leopard和64位MySQL DMG。
创建/etc/my.cnf指向我以前的MySQL数据目录(如here所述)并运行
sudo mysql_upgrade
。
打开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}'}
卸载了我安装的MySQL gem。
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
有了这个,到目前为止一切似乎都在发挥作用。 *敲木头*
答案 13 :(得分:1)
我继续像这篇文章(http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/)中解释的那样,现在一切正常。
请记住在他的命令中查找拼写错误以安装mysql驱动程序。
答案 14 :(得分:0)
如果要使用RVM安装mysql gem,则需要使用以下代码进行安装
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
这个方法在Leopard Server中对我有用,上面没有一个工作
答案 15 :(得分:0)
这篇文章为我解决了这个问题:)
http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html
在Leopard之前
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
Snow Leopard(仅限英特尔):
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
答案 16 :(得分:0)
我将$ MYSQL_HOME / bin中的mysql_config程序重命名为其他内容,以便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
答案 17 :(得分:0)
我曾经尝试过几次略有变化的拱形技巧,但它从来没有对我有效。
最终做了的工作是切换回用雪豹安装的ruby和gem的版本。
我已经构建并安装了我自己的版本,除了这个版本之外,它在各方面都对我有用。 由于其他一切似乎工作正常,我不禁猜测mysql插件有一些时髦的假设。无论如何,我所做的只是切换/ usr / bin再次成为我路径中的第一个。我在/usr/local/ruby-1.8.7和/usr/local/ruby-1.9.1中安装了ruby以便能够轻松切换。我以为我会提到它,因为archflags解决方案似乎适用于很多人,但并不是全部。