web-dev-qa-db-de.com

Die Installation von Mysql 2 gem schlägt fehl

Ich versuche, mysql2 (version 0.4.5 ) zu installieren und verwende Rails 5.0.2 , Ruby 2.3.1 

Ich habe den MySQL-Server bereits mit Homebrew (Version 8.0.11) installiert und MySQL gestartet als:

brew install mysql
brew services start mysql

Gemfile.rb

gem 'mysql2'

Wenn ich versuche, gem mysql2 zu installieren, erhalte ich die folgende Fehlermeldung

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/gomathi/.rvm/gems/[email protected]/gems/mysql2-0.4.5/ext/mysql2

creating Makefile

current directory: /Users/gomathi/.rvm/gems/[email protected]/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/gomathi/.rvm/gems/[email protected]/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

Wie kann ich die Arbeit erledigen? 

13
Gomathi

Sie installieren eine ältere Version des Edelsteins (0.4.5). Ich hatte das gleiche Problem (mit 0.4.3). Die Installation der Version 0.4.10 hat das für mich gelöst.

Versuche dies:

gem install mysql2 -v 0.4.10

Wenn dies ordnungsgemäß installiert wird, müssen Sie Ihre Gemfile aktualisieren, um diese Version zu benötigen:

gem 'mysql2', '~> 0.4.10'

Nicht Installieren Sie eine neuere Version des Gem (0.5.x). Sie funktionieren nicht mit Rails 4 oder älteren Releases von Rails 5 (vor 5.0.7/5.1.6) (siehe https://github.com/brianmario/mysql2/issues/950 ).

19
Chris W

Eine andere Alternative, die für mich hier funktionierte, war die Installation von MariaDB, die auch spezifisch Version 10.0.x war

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

Um MariaDB Server automatisch zu starten, verwenden Sie die Services-Funktionalität von Homebrew, die in macOS launchctl integriert ist:

brew services start [email protected]

Die Installation von mysql2 funktioniert nun wie ein Zauber.

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

Laut MySQL 5.7 wurde das Dokument MYSQL_SECURE_AUTH standardmäßig in 5.7 aktiviert, da sich der mysql2 nicht unter der Version 0.4.10 auf MySQL => 5.7 compiliert

0

Ich habe es durch die Installation von MySQL aus dem dmg-Paket https://dev.mysql.com/downloads/mysql/5.7.html#downloads geschafft.

0
vrybas

Ich denke, Sie können alles in Gemfile.lock entfernen. Nachdem Sie bundle install noch einmal probiert haben, läuft Ihr Projekt in Ordnung.