首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装Mysql 2 gem失败

安装Mysql 2 gem失败
EN

Stack Overflow用户
提问于 2018-06-18 20:48:49
回答 6查看 18.4K关注 0票数 25

我正在尝试安装mysql2 (版本为0.4.5),我使用的是Rails 5.0.2,Ruby2.3.1

我已经使用homebrew (版本8.0.11)安装了mysql服务器,并启动了mysql:

代码语言:javascript
复制
brew install mysql
brew services start mysql

Gemfile.rb

代码语言:javascript
复制
gem 'mysql2'

当我尝试安装gem mysql2时,我得到以下错误

代码语言:javascript
复制
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/gomathi/.rvm/gems/ruby-2.3.1@connector/gems/mysql2-0.4.5/ext/mysql2

creating Makefile

current directory: /Users/gomathi/.rvm/gems/ruby-2.3.1@connector/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/gomathi/.rvm/gems/ruby-2.3.1@connector/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR="
compiling client.c
In file included from client.c:1:
In file included from ./mysql2_ext.h:41:
./result.h:24:3: error: unknown type name 'my_bool'
  my_bool *is_null;
  ^
./result.h:25:3: error: unknown type name 'my_bool'
  my_bool *error;
  ^
client.c:507:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:509:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:828:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:859:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:860:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:863:10: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
    case MYSQL_SECURE_AUTH:
         ^~~~~~~~~~~~~~~~~
         MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
client.c:864:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:865:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:896:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1285:38: error: use of undeclared identifier 'MYSQL_SECURE_AUTH'; did you mean 'MYSQL_DEFAULT_AUTH'?
  return _mysql_client_options(self, MYSQL_SECURE_AUTH, value);
                                     ^~~~~~~~~~~~~~~~~
                                     MYSQL_DEFAULT_AUTH
/usr/local/Cellar/mysql/8.0.11/include/mysql/mysql.h:188:3: note: 'MYSQL_DEFAULT_AUTH' declared here
  MYSQL_DEFAULT_AUTH,
  ^
12 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

我怎样才能完成这项工作呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-06-19 05:39:09

您正在安装较旧版本的gem (0.4.5)。我也有同样的问题(使用0.4.3)。安装0.4.10版本为我解决了这个问题。

试试这个:

代码语言:javascript
复制
gem install mysql2 -v 0.4.10

如果可以完全安装,您必须更新您的Gemfile以要求此版本:

代码语言:javascript
复制
gem 'mysql2', '~> 0.4.10'

不要安装较新版本的gem (即0.5.x),它们不能与Rails 4或更早版本的Rails 5(5.0.7/5.1.6之前)一起工作(请参阅https://github.com/brianmario/mysql2/issues/950)。

票数 33
EN

Stack Overflow用户

发布于 2018-12-28 03:16:06

根据MySQL 5.7 document MYSQL_SECURE_AUTH在5.7中默认已启用,因为mysql2未编译到版本0.4.10以下的MySQL => 5.7

票数 3
EN

Stack Overflow用户

发布于 2018-10-09 03:29:51

另一个适用于我的替代方案是安装MariaDB,也就是10.0.x版本

代码语言:javascript
复制
$ brew install mariadb@10.0
$ brew link mariadb@10.0 --force

要自动启动MariaDB服务器,请使用Homebrew的服务功能,该功能与macOS启动auto集成:

代码语言:javascript
复制
brew services start mariadb@10.0

现在,mysql2的安装将会非常出色。

代码语言:javascript
复制
$ gem install mysql2 -v '0.4.6'
Building native extensions. This could take a while...
Successfully installed mysql2-0.4.6
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50909928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档