web-dev-qa-db-fra.com

L'installation de Mysql 2 gem échoue

J'essaie d'installer mysql2 (version 0.4.5 ) et j'utilise Rails 5.0.2 , Ruby 2.3.1 

J'ai déjà installé le serveur mysql en utilisant homebrew (version 8.0.11) et lancé mysql en tant que:

brew install mysql
brew services start mysql

Gemfile.rb

gem 'mysql2'

Quand j'essaye d'installer gem mysql2 j'obtiens l'erreur suivante

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

Comment puis-je faire le travail? 

13
Gomathi

Vous installez une version plus ancienne de la gemme (0.4.5). J'ai eu le même problème (en utilisant 0.4.3). L'installation de la version 0.4.10 a résolu ce problème pour moi.

Essaye ça:

gem install mysql2 -v 0.4.10

Si cela s'installe proprement, vous devrez mettre à jour votre Gemfile pour exiger cette version:

gem 'mysql2', '~> 0.4.10'

Ne pas installer une version plus récente de la gemme (ie 0.5.x), elles ne fonctionneront pas avec les versions Rails 4 ou antérieures de Rails 5 (antérieures à 5.0.7/5.1.6) (voir https : //github.com/brianmario/mysql2/issues/950 ).

19
Chris W

Une autre alternative qui a fonctionné pour moi ici a été d'installer MariaDB, qui est trop spécifiquement la version 10.0.x.

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

Pour démarrer automatiquement MariaDB Server, utilisez la fonctionnalité de services de Homebrew, qui s'intègre à macOS launchctl:

brew services start [email protected]

Maintenant, l’installation de mysql2 fonctionnera à merveille.

$ gem install mysql2 -v '0.4.6'
Building native extensions. This could take a while...
Successfully installed mysql2-0.4.6
0
Sagar Ranglani

Selon MySQL 5.7, le document MYSQL_SECURE_AUTH a été activé par défaut dans la version 5.7, à cause de cela, le mysql2 ne compile pas sous la version 0.4.10 dans MySQL => 5.7

0
Elinaldo Monteiro

Je l'ai fait fonctionner en installant MySQL à partir du paquet dmg https://dev.mysql.com/downloads/mysql/5.7.html#downloads

0
vrybas

Je pense que vous pouvez tout supprimer dans Gemfile.lock. Après avoir réessayé bundle install, votre projet fonctionnera correctement.

0