31

在我的 mac OSX 10.6 32 位中,我可以很容易地安装 mysql2 gem,但不能在 mini mac 10.6 64 位服务器中。

我已经在麻烦的服务器中安装了 MySQL 5.5.11,而在我的家庭 mac MySQL 5.5.0.m2 中,当我运行 bundle install 时,在服务器中它尝试在家庭 mysql2.0.2.6 中安装 mysql2.0.3.2

请不要告诉我

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

我试过了,不行。

在 $PATH 中包含 /usr/local/mysql/bin 也无济于事。

错误代码:

    Installing mysql2 (0.3.2) with native extensions /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

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=/Users/administrator/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
    --with-mysql-config
    --without-mysql-config


Gem files will remain installed in /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2 for inspection.
Results logged to /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/ext/mysql2/gem_make.out
    from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:511:in `block in build_extensions'
    from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `each'
    from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `build_extensions'
    from /Users/administrator/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:159:in `install'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/source.rb:96:in `install'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:55:in `block in run'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `block in each'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:44:in `run'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:8:in `install'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/cli.rb:225:in `install'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/bin/bundle:13:in `<top (required)>'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/bin/bundle:19:in `load'
    from /Users/administrator/.rvm/gems/ruby-1.9.2-p180/bin/bundle:19:in `<main>'
4

13 回答 13

92

我尝试了此处发布的所有解决方案,但并不幸运。我用自制软件重新安装了 mysql 几次,但仍然没有运气。然后我发现了一篇带有解决方案的博客文章。

我编辑了 mysql_config 文件/usr/local/Cellar/mysql/5.6.12/bin并删除了 W 编译器选项 -Wno-null-conversion以及 -Wno-unused-private-field cflags 和 cxxflags。

这解决了问题gem install mysql2bundle install

参考:http ://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

于 2013-06-23T11:54:02.257 回答
28

我在 redmine repo 上进行了捆绑安装,并收到了相同的错误消息:

mysql.h 丢失。请检查您的mysql安装并重试。

运行 Fedora 16 64 位,我所做的只是mysql-devel从发行版 rpm 安装(开发包),问题就解决了!

所以我认为你可以

yum install mysql-devel

或 apt-get 缺少的开发包。

于 2012-06-10T12:24:41.490 回答
8

对于不使用brew安装mysql并使用mysql 5.6及更高版本的人:

根据这个答案

您需要编辑mysql_config在我的案例中放置的内容:/usr/local/mysql-5.6.12-osx10.7-x86_64/bin

cflags并更改cxxflags为:

cflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!

在这个操作之后

$ gem install mysql2 -v '0.3.13'

完美无缺

于 2013-07-24T09:47:12.440 回答
4

好吧,对我来说,解决方案是:

$ sudo brew install mysql

$ sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
  --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
  --with-mysql-include=/usr/local/mysql/include

来源:http ://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard

或者 :

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

如果你的mysql版本是64Bits

之后我遇到了很多问题,因为如果我想创建数据库:

$: bundle exec rake db:reset

我收到此错误:

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
  Expected in: flat namespace

解决方案是:在你的 gemfile 添加: gem "ruby-mysql"

好的,一天半找到解决方案。

祝你今天过得愉快!

于 2011-09-27T16:47:27.270 回答
2

此方法适用于 64 位机器上的 Rails 3.1.0(并有望升级)。我在 Ruby-1.9.2-p180 上使用过。

这个博客回答了它:http ://www.tatvartha.com/2010/10/installing-mysql-gem-with-bundler-on-snow-leopard/

基本上就是上面的方法: $ sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

可以工作,但没有捆绑器。

要使用捆绑器执行此操作,首先必须在终端上运行它:

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

请注意该博客中显示的“mysql2”而不是“mysql”。

这将配置添加到 ~/.bundle/config 文件

然后将其添加到 ~/.bash_profile:

export ARCHFLAGS="-arch x86_64"

这与告诉 bundler 在这篇文章的顶部运行命令是一样的。

于 2012-02-20T11:10:51.893 回答
1

我可以让它工作的唯一方法是安装 x64 版本的 mysql。我刚刚使用了位于http://dev.mysql.com/downloads/mysql/的 .dmg ,它就像一个魅力。希望我能花 4 个小时来解决这个问题。

于 2012-04-24T02:17:47.740 回答
1

这在我的 Mac OSX Lion 上对我有用:

sudo env ARCHFLAGS="-I/usr/local/include/mysql/mysql  -pipe -fPIC    -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL" gem install mysql -- --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/lib/mysql/mysql --with-mysql-include=/usr/local/include/mysql/mysql --with-mysql-config=/usr/local/bin/mysql_config

这个博客回答了它

于 2013-05-14T17:26:39.667 回答
1

我的问题是首先通过可下载的二进制文件安装 MySql 的结果。它最初安装在版本 5.5.28。然后我尝试通过自制软件安装。Brew 安装了 5.6.x 版。但是在通过自制软件安装的过程中,/usr/local/mysql 的符号链接仍然指向 5.5.28。

将您的符号链接更新为通过自制软件安装的任何版本。

例如:/usr/local/mysql -> /usr/local/Cellar/mysql/5.6.13/

这可能只是解决方案的一部分。

于 2013-10-17T20:01:57.600 回答
1

对于 mariadb:

sudo apt-get install libmariadbclient18 libmariadbclient-dev

然后

gem install mysql2

可以成功安装。

于 2015-05-18T22:37:42.010 回答
0

验证 gcc 是否已安装。如果不是,您将收到相同的错误消息。

您可以检查它提到的结果/日志文件以获取有关原因的更多线索。

于 2011-05-28T15:48:31.327 回答
0

在我可以发布的任何地方发布 - 希望它会帮助某人并节省他们很多时间。

我挖了 2 天的互联网和 Stack Overflow,直到我找到这个链接,然后开始处理mysql2 的这张票,我才真正解决了这个问题。

使用我的设置(如票证中所述), -Wno-null-conversion -Wno-unused-private-field 的编译器开关会中断并给我一个不完全正确的错误,即:

mysql.h is missing. please check your installation of mysql and try again
于 2013-06-25T17:10:16.517 回答
0

对于 Fedora 21 上的用户,并且您已经安装了 mysql-devel:

yum install redhat-rpm-config

为我解决了这个问题。见: 红帽文档

于 2015-03-07T19:58:08.770 回答
0

TL;博士:

sudo ln -s /usr/local/opt/mysql@5.6 /usr/local/mysql

我被这个问题困扰了将近 2 天,然后重新安装xcodemysql很多次。

我最初是mysql@5.6使用 安装brew的,但该bundle install命令一直失败,因为它找不到mysql安装。下面的错误输出:

libmysqlclient is missing. You may need to 'brew install mysql' or 'port install mysql', and try again.

但是,使用@Kevin Boedigheimer 的回答帮助解决了问题,即我将安装链接mysql@5.6/usr/local/mysql

sudo ln -s /usr/local/opt/mysql@5.6 /usr/local/mysql

注意:如果您的 mysql 目录在其他地方,您可以使用以下命令找到它:

find / -name 'mysql*5.6' 2&> /dev/null

# '2&> /dev/null' ensures you have just the output you need
于 2021-07-29T17:41:50.357 回答