【问题标题】:Install mysql2 on Mac OS在 Mac OS 上安装 mysql2
【发布时间】:2013-07-02 17:08:45
【问题描述】:

我已经安装了 Ruby 2、Rails 4 和 MySQL(使用自制软件)。

我尝试安装 gem “mysql2”,但收到此消息:

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

/usr/local/rvm/rubies/ruby-2.0.0-p247/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=/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby
--with-mysql-config
--without-mysql-config


Gem files will remain installed in /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.11 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.11/ext/mysql2/gem_make.out

你能帮帮我吗?

【问题讨论】:

  • 缺少mysql.h 可能意味着您缺少 mysql-devel 包(或任何它在 osx 上的包),它提供了用于将 mysql 支持编译到其他应用程序中的头文件/库。
  • 您缺少 mysql 标头。这可以在一个单独的包中(在 Linux 分发包中,这可能是 mysql-devel)。
  • @spullen,我用自制软件安装mysql

标签: ruby rubygems ruby-on-rails-4 mysql2 ruby-2.0


【解决方案1】:

由于某种原因,通过自制软件安装 mysql 被破坏。您必须手动编辑mysql_config

homebrew的mysql_config文件留在/usr/local/Cellar/mysql/5.6.12/bin, 用sudo 打开它,在第 120 行附近,找到这些行:

cflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space!

两行中的远程-Wno-null-conversion -Wno-unused-private-filed 如下所示:

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

保存文件并再次执行brew install mysql,它应该可以工作了。

检查this blog post

【讨论】:

  • 我用 : cflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: end space! cxxflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF -arch x86_64 " #note: 结束空间!但我有同样的错误信息...... :(
  • 你执行ln -s /usr/local/Cellar/mysql/5.6.12/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib了吗?
  • 不需要重新安装mysql,但一定要重启sudo mysqld restart
【解决方案2】:

检查您正在安装的 Rails 和 mysql 版本的兼容性。 和我一起,我用 Mysql 8.0 启动 Rails 4.1.15,但它不起作用,我遇到了类似的错误。 然后我安装了

brew install mysql56

在此之前卸载mysql,如果你已经安装了一个 -

brew uninstall mysql
brew cleanup

现在通过指定要用作mysql的数据库来创建一个新的rails项目

rails new <PROJECT_NAME> -d mysql

这将使用兼容的 mysql 创建一个新的 rails 4 项目 在此之后,您可以随时配置 database.yml 文件以获取更多详细信息

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2015-02-04
    • 2018-03-01
    • 2018-05-24
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多