web-dev-qa-db-ja.com

Rails mysql2のインストールエラー(mysql2-0.3.20)

私はローカルマシンでRailsプロジェクトを立ち上げて実行しようとしています。バンドルインストールを行うとき

Fetching mysql2 0.3.20
Installing mysql2 0.3.20 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-

0.3.20/ext/mysql2
/Users/mac/.rvm/rubies/Ruby-2.3.1/bin/Ruby -r ./siteconf20180707-33936-1toblx7.rb extconf.rb
checking for Ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in Ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Setting rpath to /usr/local/Cellar/mysql/8.0.11/lib
-----
creating Makefile

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR="
compiling infile.c
compiling client.c
client.c:367:33: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
        elapsed_time = end_time - start_time;
                     ~ ~~~~~~~~~^~~~~~~~~~~~
client.c:439:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:441:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:775:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:806:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:807:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:810: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:811:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:812:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:843:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1165:56: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'unsigned int' [-Wshorten-64-to-32]
  mysql2rb = mysql2_mysql_enc_name_to_rb(charset_name, charset_name_len);
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~~~~~~
client.c:1198: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,
  ^
2 warnings and 10 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20 for inspection.
Results logged to /Users/mac/.rvm/gems/Ruby-2.3.1/extensions/x86_64-darwin-17/2.3.0/mysql2-0.3.20/gem_make.out

An error occurred while installing mysql2 (0.3.20), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.20' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

その後、指示に従います

gem install mysql2 -v '0.3.20' --source 'https://rubygems.org/'
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
/Users/mac/.rvm/rubies/Ruby-2.3.1/bin/Ruby -r ./siteconf20180707-34132-p3fohi.rb extconf.rb
checking for Ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in Ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Setting rpath to /usr/local/Cellar/mysql/8.0.11/lib
-----
creating Makefile

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR="
compiling infile.c
compiling client.c
client.c:367:33: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
        elapsed_time = end_time - start_time;
                     ~ ~~~~~~~~~^~~~~~~~~~~~
client.c:439:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:441:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:775:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:806:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:807:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:810: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:811:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:812:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:843:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1165:56: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'unsigned int' [-Wshorten-64-to-32]
  mysql2rb = mysql2_mysql_enc_name_to_rb(charset_name, charset_name_len);
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~~~~~~
client.c:1198: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,
  ^
2 warnings and 10 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20 for inspection.
Results logged to /Users/mac/.rvm/gems/Ruby-2.3.1/extensions/x86_64-darwin-17/2.3.0/mysql2-0.3.20/gem_make.out

ここで言及した解決策を試しました

Ruby gem mysql2インストール失敗

brew install mysql
Warning: mysql 8.0.11 is already installed and up-to-date
To reinstall 8.0.11, run `brew reinstall mysql`

その後

gem install mysql2
Building native extensions.  This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

しかし、バンドルを再度インストールすると、これらのエラーがすべて表示されます

奇妙なことに私が走ったら

 brew reinstall mysql
==> Reinstalling mysql 
==> Downloading https://homebrew.bintray.com/bottles/mysql-8.0.11.high_sierra.bottle.tar.gz
Already downloaded: /Users/mac/Library/Caches/Homebrew/mysql-8.0.11.high_sierra.bottle.tar.gz
==> Pouring mysql-8.0.11.high_sierra.bottle.tar.gz
==> /usr/local/Cellar/mysql/8.0.11/bin/mysqld --initialize-insecure --user=mac --basedir=/usr/local/Cellar/mysql/8.0.11 --datadir=/usr/local/var/mysql --tmpdir=/tmp
Last 15 lines from /Users/mac/Library/Logs/Homebrew/mysql/post_install.01.mysqld:
2018-07-07 23:56:01 -0500

/usr/local/Cellar/mysql/8.0.11/bin/mysqld
--initialize-insecure
--user=mac
--basedir=/usr/local/Cellar/mysql/8.0.11
--datadir=/usr/local/var/mysql
--tmpdir=/tmp

2018-07-08T04:56:01.743929Z 0 [System] [MY-013169] [Server] /usr/local/Cellar/mysql/8.0.11/bin/mysqld (mysqld 8.0.11) initializing of server in progress as process 35410
2018-07-08T04:56:01.746039Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2018-07-08T04:56:01.746086Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-07-08T04:56:01.746293Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.11/bin/mysqld: Shutdown complete (mysqld 8.0.11)  Homebrew.
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall mysql`
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

To have launchd start mysql now and restart at login:
  brew services start mysql
Or, if you don't want/need a background service you can just run:
  mysql.server start
==> Summary
????  /usr/local/Cellar/mysql/8.0.11: 254 files, 232.6MB

紛らわしく、正直なところ、私は100%を理解しておらず、問題の根源である可能性が非常に高いですが、わかりません。

XCodeの最新バージョンに更新し、開発ツールをインストールしました

gemfile.lockは次のようになります

GEM
  remote: https://rubygems.org/
  specs:
    actionmailer (4.2.0)
      actionpack (= 4.2.0)
      actionview (= 4.2.0)
      activejob (= 4.2.0)
      mail (~> 2.5, >= 2.5.4)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
    actionpack (4.2.0)
      actionview (= 4.2.0)
      activesupport (= 4.2.0)
      rack (~> 1.6.0)
      rack-test (~> 0.6.2)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
      Rails-html-sanitizer (~> 1.0, >= 1.0.1)
    actionview (4.2.0)
      activesupport (= 4.2.0)
      builder (~> 3.1)
      erubis (~> 2.7.0)
      Rails-dom-testing (~> 1.0, >= 1.0.5)
      Rails-html-sanitizer (~> 1.0, >= 1.0.1)
    activejob (4.2.0)
      activesupport (= 4.2.0)
      globalid (>= 0.3.0)
    activemodel (4.2.0)
      activesupport (= 4.2.0)
      builder (~> 3.1)
    activerecord (4.2.0)
      activemodel (= 4.2.0)
      activesupport (= 4.2.0)
      arel (~> 6.0)
    activesupport (4.2.0)
      i18n (~> 0.7)
      json (~> 1.7, >= 1.7.7)
      minitest (~> 5.1)
      thread_safe (~> 0.3, >= 0.3.4)
      tzinfo (~> 1.1)
    addressable (2.4.0)
    arel (6.0.3)
    authority (3.1.0)
      activesupport (>= 3.0.0)
      rake (>= 0.8.7)
    autoprefixer-Rails (6.3.6.2)
      execjs
    aws_cf_signer (0.1.3)
    bcrypt (3.1.11)
    better_errors (2.1.1)
      coderay (>= 1.0.0)
      erubis (>= 2.6.6)
      rack (>= 0.9.0)
    binding_of_caller (0.7.2)
      debug_inspector (>= 0.0.1)
    bootstrap-sass (3.3.6)
      autoprefixer-Rails (>= 5.2.1)
      sass (>= 3.3.4)
    builder (3.2.2)
    byebug (9.0.4)
    carrierwave (0.11.2)
      activemodel (>= 3.2.0)
      activesupport (>= 3.2.0)
      json (>= 1.7)
      mime-types (>= 1.16)
      mimemagic (>= 0.3.0)
    celluloid (0.16.0)
      timers (~> 4.0.0)
    chartkick (2.0.0)
    ckeditor (4.1.6)
      cocaine
      orm_adapter (~> 0.5.0)
    climate_control (0.0.3)
      activesupport (>= 3.0)
    cloudinary (1.1.7)
      aws_cf_signer
      rest-client
    cocaine (0.5.8)
      climate_control (>= 0.0.3, < 1.0)
    coderay (1.1.1)
    coffee-Rails (4.1.1)
      coffee-script (>= 2.2.0)
      railties (>= 4.0.0, < 5.1.x)
    coffee-script (2.4.1)
      coffee-script-source
      execjs
    coffee-script-source (1.10.0)
    concurrent-Ruby (1.0.2)
    connection_pool (2.2.0)
    debug_inspector (0.0.2)
    devise (4.1.1)
      bcrypt (~> 3.0)
      orm_adapter (~> 0.1)
      railties (>= 4.1.0, < 5.1)
      responders
      warden (~> 1.2.3)
    dotenv (2.1.1)
    dotenv-Rails (2.1.1)
      dotenv (= 2.1.1)
      railties (>= 4.0, < 5.1)
    erubis (2.7.0)
    execjs (2.7.0)
    faraday (0.11.0)
      multipart-post (>= 1.2, < 3)
    font-awesome-Rails (4.6.3.0)
      railties (>= 3.2, < 5.1)
    friendly_id (5.1.0)
      activerecord (>= 4.0.0)
    globalid (0.3.6)
      activesupport (>= 4.1.0)
    groupdate (3.0.0)
      activesupport (>= 3)
    hashie (3.5.5)
    hitimes (1.2.4)
    i18n (0.7.0)
    ice_cube (0.11.1)
    jbuilder (2.4.1)
      activesupport (>= 3.0.0, < 5.1)
      multi_json (~> 1.2)
    jquery-Rails (4.1.1)
      Rails-dom-testing (>= 1, < 3)
      railties (>= 4.2.0)
      thor (>= 0.14, < 2.0)
    jquery-ui-Rails (4.2.1)
      railties (>= 3.2.16)
    json (1.8.3)
    jwt (1.5.6)
    kaminari (0.16.3)
      actionpack (>= 3.0.0)
      activesupport (>= 3.0.0)
    libv8 (3.16.14.15)
    loofah (2.0.3)
      nokogiri (>= 1.5.9)
    mail (2.6.4)
      mime-types (>= 1.16, < 4)
    meta-tags (2.1.0)
      actionpack (>= 3.0.0)
    mime-types (3.1)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2016.0521)
    mimemagic (0.3.1)
    mini_magick (4.5.1)
    mini_portile2 (2.0.0)
    minitest (5.9.0)
    multi_json (1.12.1)
    multi_xml (0.6.0)
    multipart-post (2.0.0)
    mysql2 (0.3.20)
    newrelic_rpm (3.15.2.317)
    nokogiri (1.6.7.2)
      mini_portile2 (~> 2.0.0.rc2)
    oauth2 (1.3.1)
      faraday (>= 0.8, < 0.12)
      jwt (~> 1.0)
      multi_json (~> 1.3)
      multi_xml (~> 0.5)
      rack (>= 1.2, < 3)
    omniauth (1.6.1)
      hashie (>= 3.4.6, < 3.6.0)
      rack (>= 1.6.2, < 3)
    omniauth-facebook (4.0.0)
      omniauth-oauth2 (~> 1.2)
    omniauth-oauth2 (1.4.0)
      oauth2 (~> 1.0)
      omniauth (~> 1.2)
    orm_adapter (0.5.0)
    polyamorous (1.3.0)
      activerecord (>= 3.0)
    quiet_assets (1.1.0)
      railties (>= 3.1, < 5.0)
    rack (1.6.5)
    rack-canonical-Host (0.2.2)
      addressable (> 0, < 3)
      rack (>= 1.0.0, < 3)
    rack-protection (1.5.3)
      rack
    rack-test (0.6.3)
      rack (>= 1.0)
    Rails (4.2.0)
      actionmailer (= 4.2.0)
      actionpack (= 4.2.0)
      actionview (= 4.2.0)
      activejob (= 4.2.0)
      activemodel (= 4.2.0)
      activerecord (= 4.2.0)
      activesupport (= 4.2.0)
      bundler (>= 1.3.0, < 2.0)
      railties (= 4.2.0)
      sprockets-Rails
    Rails-deprecated_sanitizer (1.0.3)
      activesupport (>= 4.2.0.alpha)
    Rails-dom-testing (1.0.7)
      activesupport (>= 4.2.0.beta, < 5.0)
      nokogiri (~> 1.6.0)
      Rails-deprecated_sanitizer (>= 1.0.1)
    Rails-html-sanitizer (1.0.3)
      loofah (~> 2.0)
    Rails-i18n (4.0.8)
      i18n (~> 0.7)
      railties (~> 4.0)
    Rails_12factor (0.0.3)
      Rails_serve_static_assets
      Rails_stdout_logging
    Rails_serve_static_assets (0.0.5)
    Rails_stdout_logging (0.0.5)
    railties (4.2.0)
      actionpack (= 4.2.0)
      activesupport (= 4.2.0)
      rake (>= 0.8.7)
      thor (>= 0.18.1, < 2.0)
    rake (11.1.2)
    ranked-model (0.4.0)
      activerecord (>= 3.1.12)
    ransack (1.7.0)
      actionpack (>= 3.0)
      activerecord (>= 3.0)
      activesupport (>= 3.0)
      i18n
      polyamorous (~> 1.2)
    rdoc (4.2.2)
      json (~> 1.4)
    redis (3.3.0)
    redis-namespace (1.5.2)
      redis (~> 3.0, >= 3.0.4)
    ref (2.0.0)
    responders (2.2.0)
      railties (>= 4.2.0, < 5.1)
    rest-client (1.6.7)
      mime-types (>= 1.16)
    sass (3.4.22)
    sass-Rails (5.0.4)
      railties (>= 4.0.0, < 5.0)
      sass (~> 3.1)
      sprockets (>= 2.8, < 4.0)
      sprockets-Rails (>= 2.0, < 4.0)
      tilt (>= 1.1, < 3)
    sdoc (0.4.1)
      json (~> 1.7, >= 1.7.7)
      rdoc (~> 4.0)
    sidekiq (3.4.2)
      celluloid (~> 0.16.0)
      connection_pool (~> 2.2, >= 2.2.0)
      json (~> 1.0)
      redis (~> 3.2, >= 3.2.1)
      redis-namespace (~> 1.5, >= 1.5.2)
    sidetiq (0.6.3)
      celluloid (>= 0.14.1)
      ice_cube (= 0.11.1)
      sidekiq (>= 3.0.0)
    sinatra (1.4.7)
      rack (~> 1.5)
      rack-protection (~> 1.4)
      tilt (>= 1.3, < 3)
    slim (3.0.7)
      temple (~> 0.7.6)
      tilt (>= 1.3.3, < 2.1)
    slim-Rails (3.0.1)
      actionmailer (>= 3.1, < 5.0)
      actionpack (>= 3.1, < 5.0)
      activesupport (>= 3.1, < 5.0)
      railties (>= 3.1, < 5.0)
      slim (~> 3.0)
    spring (1.7.1)
    sprockets (3.6.0)
      concurrent-Ruby (~> 1.0)
      rack (> 1, < 3)
    sprockets-Rails (3.0.4)
      actionpack (>= 4.0)
      activesupport (>= 4.0)
      sprockets (>= 3.0.0)
    temple (0.7.7)
    therubyracer (0.12.2)
      libv8 (~> 3.16.14.0)
      ref
    thor (0.19.1)
    thread_safe (0.3.5)
    tilt (2.0.4)
    timers (4.0.4)
      hitimes
    tzinfo (1.2.2)
      thread_safe (~> 0.1)
    uglifier (3.0.0)
      execjs (>= 0.3.0, < 3)
    warden (1.2.6)
      rack (>= 1.0)
    web-console (2.3.0)
      activemodel (>= 4.0)
      binding_of_caller (>= 0.7.2)
      railties (>= 4.0)
      sprockets-Rails (>= 2.0, < 4.0)

PLATFORMS
  Ruby

DEPENDENCIES
  authority (~> 3.0)
  bcrypt (~> 3.1.7)
  better_errors
  bootstrap-sass (~> 3.3.6)
  byebug
  carrierwave
  chartkick
  ckeditor
  cloudinary
  coffee-Rails (~> 4.1.0)
  devise
  dotenv-Rails
  font-awesome-Rails
  friendly_id
  groupdate
  jbuilder (~> 2.0)
  jquery-Rails
  jquery-ui-Rails (~> 4.2.1)
  kaminari (~> 0.15)
  meta-tags
  mini_magick
  mysql2 (~> 0.3.20)
  newrelic_rpm
  omniauth-facebook
  quiet_assets
  rack-canonical-Host
  Rails (= 4.2.0)
  Rails-i18n
  Rails_12factor
  ranked-model
  ransack
  sass-Rails (~> 5.0)
  sdoc (~> 0.4.0)
  sidekiq (~> 3.4.2)
  sidetiq (~> 0.6)
  sinatra (>= 1.3.0)
  slim-Rails
  spring
  therubyracer
  uglifier (>= 1.3.0)
  web-console (~> 2.0)

Ruby VERSION
   Ruby 2.3.1p112

BUNDLED WITH
   1.12.5

また、この回答のようなより具体的なコマンドを推奨してみました

https://stackoverflow.com/a/32869742/823978

それでも同じエラーが発生します。

gem install mysql2 -v '0.3.20' -- --with-mysql-config=/usr/local/Cellar/mysql/8.0.11/bin/mysql_config
Building native extensions with: '--with-mysql-config=/usr/local/Cellar/mysql/8.0.11/bin/mysql_config'
This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
/Users/mac/.rvm/rubies/Ruby-2.3.1/bin/Ruby -r ./siteconf20180708-38248-vd681p.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/8.0.11/bin/mysql_config
checking for Ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in Ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/Cellar/mysql/8.0.11/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Setting rpath to /usr/local/Cellar/mysql/8.0.11/lib
-----
creating Makefile

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20/ext/mysql2
make "DESTDIR="
compiling infile.c
compiling client.c
client.c:367:33: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
        elapsed_time = end_time - start_time;
                     ~ ~~~~~~~~~^~~~~~~~~~~~
client.c:439:3: error: use of undeclared identifier 'my_bool'
  my_bool res = mysql_read_query_result(client);
  ^
client.c:441:19: error: use of undeclared identifier 'res'
  return (void *)(res == 0 ? Qtrue : Qfalse);
                  ^
client.c:775:3: error: use of undeclared identifier 'my_bool'
  my_bool boolval;
  ^
client.c:806:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:807:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:810: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:811:7: error: use of undeclared identifier 'boolval'
      boolval = (value == Qfalse ? 0 : 1);
      ^
client.c:812:17: error: use of undeclared identifier 'boolval'
      retval = &boolval;
                ^
client.c:843:38: error: use of undeclared identifier 'boolval'
        wrapper->reconnect_enabled = boolval;
                                     ^
client.c:1165:56: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'unsigned int' [-Wshorten-64-to-32]
  mysql2rb = mysql2_mysql_enc_name_to_rb(charset_name, charset_name_len);
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~               ^~~~~~~~~~~~~~~~
client.c:1198: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,
  ^
2 warnings and 10 errors generated.
make: *** [client.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/mac/.rvm/gems/Ruby-2.3.1/gems/mysql2-0.3.20 for inspection.
Results logged to /Users/mac/.rvm/gems/Ruby-2.3.1/extensions/x86_64-darwin-17/2.3.0/mysql2-0.3.20/gem_make.out

Mysql_configファイルのログは次のとおりです。

mysql_config
Usage: /usr/local/bin/mysql_config [OPTIONS]
Compiler: Clang 9.1.0.9020039
Options:
        --cflags         [-I/usr/local/Cellar/mysql/8.0.11/include/mysql ]
        --cxxflags       [-I/usr/local/Cellar/mysql/8.0.11/include/mysql ]
        --include        [-I/usr/local/Cellar/mysql/8.0.11/include/mysql]
        --libs           [-L/usr/local/Cellar/mysql/8.0.11/lib -lmysqlclient -lssl -lcrypto]
        --libs_r         [-L/usr/local/Cellar/mysql/8.0.11/lib -lmysqlclient -lssl -lcrypto]
        --plugindir      [/usr/local/Cellar/mysql/8.0.11/lib/plugin]
        --socket         [/tmp/mysql.sock]
        --port           [0]
        --version        [8.0.11]
        --variable=VAR   VAR is one of:
                pkgincludedir [/usr/local/Cellar/mysql/8.0.11/include/mysql]
                pkglibdir     [/usr/local/Cellar/mysql/8.0.11/lib]
                plugindir     [/usr/local/Cellar/mysql/8.0.11/lib/plugin]

Mac High Sierra 10.13.4を使用しています

私はそれが私を夢中にさせているので、私はそれに着くことができるどんなアドバイスも大好きです。より良い質問をするために提供できる他の情報を教えてください。

前もって感謝します

10
James Weber

今日、この問題に遭遇しました。 mysqlは最近更新されたので、私のために働いたのは:

brew install [email protected]
brew link [email protected] --force
bundle install

別の方法として、私はこの解決策を試しませんでしたが、他の人々のために働いたようです。

Mysql 2 gemのインストールが失敗する

28

Mac Proにmysql2-0.3.21をインストールするときに同じ問題に直面しました。

下記のソリューションは私のために働いた(プロジェクトフォルダを指しているターミナルで下記の3つのコマンドを実行する):

brew install mysql

gem install mysql2 -v '0.3.21' -- --srcdir=/usr/local/mysql/include

bundle install
22
Abhishek Sinha

MacBook ProのMacOS Mojaveへのアップグレード中にディスクがクラッシュしたため(きれいではありません!)、その後、すべてのコードプロジェクトを再構築する必要がありました。

特定のプロジェクトの立ち上げと実行が非常に困難であることが判明したため、今日、古いRoRプロジェクトでmysql2-0.3.21を実行する方法を探して数時間を費やしました。 Rubyバージョン2.1.1p76 with Rails 4.1.1。

最後に、このアドバイスに従うことで成功しました: https://github.com/brianmario/mysql2/issues/1010#issuecomment-460257986

次の手順を実行しました。

  1. まず、gemsetからmysql2のインストール済みバージョンをすべて削除します。

    gem uninstall mysql2
    
  2. 次に、MySQL 5.6をインストールします。MySQL8.0.17が既にインストールされているため、5.6は樽としてのみインストールされます。

    brew install [email protected]
    
  3. 次に、次のコマンドを使用してmysql2バージョン0.3.21をインストールします。

    gem install mysql2 -v 0.3.21 -- --with-mysql-config=/usr/local/Cellar/[email protected]/5.6.42/bin/mysql_config --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
    

OpenSSL部分はおそらく省略でき、プロジェクトの実行中のRailsのバージョンに応じてmysql2のバージョン番号を変更できます。

上記のステップの後、Railsコンソールを再び開始し、データベースを照会できました。

Loading development environment (Rails 4.1.1)
2.1.1 :001 > User.count
   (18.7ms)  SELECT COUNT(*) FROM `users`  WHERE `users`.`deleted_at` IS NULL
 => 1222
2.1.1 :002 >
0
Thomas Bindzus

これは私のために働いた-macOS Catalina

brew uninstall mysql
gem uninstall mysql2

brew install [email protected]
brew link [email protected] --force
gem install mysql2 -v '0.3.21'

# Gemfile
gem 'mysql2', '0.3.21'

bundle update mysql2
0
PGill