39

我更新了我用 Homebrew 安装的所有软件包。MySQL 升级到 5.6.12(从 5.5.27 左右):

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using  EditLine wrapper

现在 mysql2 gem 不再编译:

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

        /Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... 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
    --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/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby
    --with-mysql-config
    --without-mysql-config

该文件mysql.h存在于/usr/local/Cellar/mysql/5.6.12/include/mysql.h. 有什么想法吗?

该文件mysql.h没有出现,/usr/local因为符号链接似乎比它应该更深:

$ ls -la /usr/local/include/mysql
lrwxr-xr-x  1 pupeno  admin  36 21 Jun 15:18 /usr/local/include/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql

代替

/usr/local/Cellar/mysql/5.6.12/include

话虽如此,我手动修复了符号链接,但编译仍然失败。所以我被困住了。

4

7 回答 7

33

我有同样的问题,我设法解决它。我做了很多事情,我不确定它是什么,但是转到 MySQL 5.6.10 似乎已经奏效了。

卸载 MySQL 5.6.12:

brew unlink mysql
brew uninstall mysql

进入自制目录:

cd /usr/local

转到版本 5.6.10(您可以通过运行找到版本列表brew versions mysql

git checkout 48f7e86 Library/Formula/mysql.rb

然后再次安装mysql:

brew install mysql

现在gem install mysql2为我工作。

我还从源代码(brew install mysql --build-from-source)安装了 mysql,但这并没有解决它,但可能是解决方案的一部分。

于 2013-06-22T16:31:51.760 回答
23

只是 ;)

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
于 2013-07-05T08:56:28.200 回答
15

这似乎也对我有用。它强制 gem 针对 5.6.10 进行编译。

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

相关答案: https ://stackoverflow.com/a/9360181

于 2013-06-25T19:35:58.033 回答
11

这里的最佳答案是过时的......酿酒商已经修复了mysql:

brew update
brew upgrade mysql
gem install mysql2

这会将 mysql 更新到最新版本,这似乎适用于 OSX 上的 mysql2 gem。

于 2013-09-27T05:42:30.423 回答
11

我必须指定ldflagsandcppflags才能正确编译,如下所示:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
于 2019-11-06T06:33:45.780 回答
6

有许多更新版本的 MySQL 可用,但对于在 Mac OS X Mojave 上安装的旧项目,我仍然需要运行 MySQL 5.6 并在 Rails 5 应用程序中链接它。

我配置了捆绑器,然后安装了捆绑包,一切顺利。

$> brew install mysql@5.6
$> bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql\@5.6/5.6.42/bin/mysql_config
$> bundle install

请注意,您需要更新路径中的 MySQL 发布版本。

于 2018-12-12T16:18:24.473 回答
1

我会推荐这个答案:mysql2 gem failed to compile with MySQL 5.6.12 on OS X with Homebrew

问题在于 Homebrew 版本的 MySql 中的编译器设置。原始答案在这里找到:http ://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

于 2013-08-14T07:13:50.930 回答