Imansible installare mysql2 gem

Non riesco a installare mysql2 gem nel mio sistema Windows 7 x64. Ho provato a utilizzare entrambe le versioni a 32 e 64 bit del server MySQL, ma nessuno mi ha ulteriormente aiutato.

Ho installato Ruby 1.8, il kit di sviluppo e la piattaforma Rails. Ho persino installato minGW per consentire la compilazione di cose in C ++ / C. MySQL Server è stato installato nel percorso predefinito.

Quando si esegue il comando:

C:\Users\Arne>gem install mysql2 -- --with-mysql-include="C:\Program Files (x86)\MySQL\MySQL Server 5.1\include" --with-mysql-lib="C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\" 

Ricevo il seguente risultato dalla console:

 Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... *** 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 --without-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=C:/Ruby/bin/ruby --with-mysql-dir --without-mysql-dir --with-mysql-include=${mysql-dir}/include --with-mysql-lib=${mysql-dir}/lib --with-libmysqllib --without-libmysqllib ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. C:/Ruby/bin/ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x 86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL \MySQL Server 5.1\lib" checking for rb_thread_blocking_region()... no checking for main() in -llibmysql... no Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/mysql2-0.3.2 f or inspection. Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/mysql2-0.3.2/ext/mysql2/gem_mak e.out 

L’output del mio ambiente secondo Rubygems è:

 C:\Users\Arne>gem env RubyGems Environment: - RUBYGEMS VERSION: 1.7.2 - RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32] - INSTALLATION DIRECTORY: C:/Ruby/lib/ruby/gems/1.8 - RUBY EXECUTABLE: C:/Ruby/bin/ruby.exe - EXECUTABLE DIRECTORY: C:/Ruby/bin - RUBYGEMS PLATFORMS: - ruby - x86-mingw32 - GEM PATHS: - C:/Ruby/lib/ruby/gems/1.8 - C:/Users/Arne/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - REMOTE SOURCES: - http://rubygems.org/ 

Anche le seguenti gemme sono state installate sul sistema:

 C:\Users\Arne>gem list --local *** LOCAL GEMS *** abstract (1.0.0) actionmailer (3.0.7) actionpack (3.0.7) activemodel (3.0.7) activerecord (3.0.7) activeresource (3.0.7) activesupport (3.0.7) arel (2.0.9) builder (3.0.0, 2.1.2) bundler (1.0.12) erubis (2.7.0, 2.6.6) fastthread (1.0.7) i18n (0.5.0) mail (2.3.0, 2.2.18) mime-types (1.16) mysql (2.8.1 x86-mingw32) polyglot (0.3.1) rack (1.2.2) rack-mount (0.7.2, 0.6.14) rack-test (0.5.7) rails (3.0.7) railties (3.0.7) rake (0.8.7) rdoc (3.5.3, 2.5.11) rdoc-data (2.5.3) rubygems-update (1.7.2) thor (0.14.6) treetop (1.4.9) tzinfo (0.3.27, 0.3.26) 

Non so cosa manca o è sbagliato, ma i file di output indicati dallo script contengono i seguenti dati:

mkmf.log:

 have_func: checking for rb_thread_blocking_region()... -------------------- no "gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -g -O2 -DFD_SETSIZE=256 conftest.c -L. -LC:/Ruby/lib -L. -lmsvcrt-ruby18-static -lshell32 -lws2_32 " conftest.c: In function 't': conftest.c:7:53: error: 'rb_thread_blocking_region' undeclared (first use in this function) conftest.c:7:53: note: each undeclared identifier is reported only once for each function it appears in checked program was: /* begin */ 1: #include  2: #include  3: #include  4: 5: /*top*/ 6: int main() { return 0; } 7: int t() { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return 0; } /* end */ "gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -g -O2 -DFD_SETSIZE=256 conftest.c -L. -LC:/Ruby/lib -L. -lmsvcrt-ruby18-static -lshell32 -lws2_32 " C:\Users\Arne\AppData\Local\Temp\ccCicaNu.o: In function `t': C:\Ruby\lib\ruby\gems\1.8\gems\mysql2-0.3.2\ext\mysql2/conftest.c:3: undefined reference to `rb_thread_blocking_region' collect2: ld returned 1 exit status checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { rb_thread_blocking_region(); return 0; } /* end */ -------------------- have_library: checking for main() in -llibmysql... -------------------- no "gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -IC:\Program -g -O2 -DFD_SETSIZE=256 conftest.c -L. -LC:/Ruby/lib -LC:\Program -L. -lmsvcrt-ruby18-static -llibmysql -lshell32 -lws2_32 " c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include  2: #include  3: #include  4: 5: /*top*/ 6: int main() { return 0; } 7: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; } /* end */ "gcc -o conftest -I. -IC:/Ruby/lib/ruby/1.8/i386-mingw32 -I. -IC:\Program -g -O2 -DFD_SETSIZE=256 conftest.c -L. -LC:/Ruby/lib -LC:\Program -L. -lmsvcrt-ruby18-static -llibmysql -lshell32 -lws2_32 " c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql collect2: ld returned 1 exit status checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { main(); return 0; } /* end */ -------------------- 

gem_make.out:

 C:/Ruby/bin/ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib" checking for rb_thread_blocking_region()... no checking for main() in -llibmysql... no 

Spero che qualcuno possa indicare cosa sto facendo male o cosa manca nel mio sistema di sviluppo per far sì che questa gem sia installata e funzionante correttamente.

Alla fine l’ho risolto:

  1. Download e installazione di MySQL 64 bit versione 5.5
  2. Scaricato l’archivio zip per la versione a 32 bit 5.5.
  3. Estratto le cartelle include e lib di 32 bit in C:\MySQL .
  4. Installato Ruby 1.9.2.
  5. Installato il Ruby Devkit.
  6. Installate le gemme:
    1. gem install mysql
    2. gem install mysql2 -- --with-mysql-lib=C:\MySQL\lib --with-mysql-include=C:\MySQL\include
    3. gem install rails
    4. gem install fastthread
    5. gem install haml

Funziona come un fascino ora. Sembra che la gem MySQL abbia problemi nel trovare i dati quando si ha a che fare con 64 bit.

Ecco cosa ha funzionato per me utilizzando: Win7 64 / MySQL 5.5 64-bit / Ruby 1.9.2:

  1. Scarica libmysql.dll .
  2. Copia il libmysql.dll sopra in C:\Ruby192\bin AND C:\Ruby192\lib , o dovunque siano lib e bin.
  3. Correre:
 gem install mysql2 - '--with-mysql-lib = "c: \ Programmi \ MySQL \ MySQL Server 5.5 \ lib" --with-mysql-include = "c: \ Programmi \ MySQL \ MySQL Server 5.5 \ include "--with-mysql-dir =" c: \ Programmi \ MySQL \ MySQL Server 5.5 "'

In bocca al lupo.

Se si verifica ancora un errore, allora verifica i passaggi di installazione su –

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html

dove la maggior parte degli utenti è stata in grado di installare mysql2 gem dopo aver seguito i passaggi descritti.

La risposta accettata non ha funzionato per me, e nemmeno l’altra 2. Tuttavia, un commento di MG sul link di Ritesh ha fatto il trucco per me. Ho dovuto specificare la versione 0.2.6 e includere il parametro –platform = ruby. (Nota: ho anche dovuto scaricare la versione “noinstall” di MySQL per ottenere / lib / opt)

Ecco come ho ottenuto la gem installata su Windows

 gem install mysql2 -v 0.2.6 -- --platform=ruby --with-mysql-lib=C:\Ruby192\MySQL\lib\opt --with-mysql-dir=C:\Ruby192\MySQL 

So che il thread è legato a Windows ma l’ho raggiunto cercando lo stesso problema su Linux e l’ho risolto installando la lib “libmysqlclient-dev”

Ho avuto problemi simili con MySQL 5.6 con Windows 7 a 64 bit. La soluzione principale qui fornita funzionava. (la soluzione suggerita da Kobalz di copiare semplicemente la DLL non ha funzionato, non ho idea del perché funzioni per Kobalz ma non per me!)

Ho quindi imbattuto in un altro problema che è descritto in questo post:

mysql2 gem compilato per la libreria client mysql errata

La soluzione qui descritta evita di scaricare un MySQL completo a 32 bit e risolve entrambi i problemi. In sostanza, scarica il connettore mysql (un download molto più piccolo) e usalo per compilare la gem mysql2. Devi scaricare esattamente la versione giusta, come descritto nel post. Nel mio caso:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

quindi copiare il file lib \ libmysql.dll da lì nella directory Ruby bin come descritto sopra.

Ho inserito il mio connettore in c: \ mysql-connector-c-noinstall-6.0.2-win32

quindi il comando per creare e installare la gem era:

gem install mysql2 – –with-mysql-lib = “c: \ mysql-connector-c-noinstall-6.0.2-win32 \ lib” –with-mysql-include = “c: \ mysql-connector-c -noinstall-6.0.2-win32 \ include “–with-mysql-dir =” c: \ mysql-connector-c-noinstall-6.0.2-win32 ”

Ho quindi incontrato ulteriori problemi quando ho eseguito il rake per eseguire una migrazione, ma ciò era dovuto al fatto che stavo usando la gem mysql (non mysql2) e mi ero dimenticato di aggiornare my.me. Con la gem mysql2, ha bisogno di dire:

sviluppo: adattatore: mysql2

piuttosto che

sviluppo: adattatore: mysql

il che è ovvio una volta che l’hai capito, ma i messaggi di errore che ho ricevuto erano simili a quelli che avevo prima, quindi sembrava che ci fosse ancora qualcosa di sbagliato nella mia gem.

Questo ha funzionato per me per un’installazione di MariaDB 5.5:

gem install mysql2 – ‘–with-mysql-lib = “c: \ Programmi (x86) \ MariaDB 5.5 \ lib” –with-mysql-include = “c: \ Programmi (x86) \ MariaDB 5.5 \ includere \ mysql “‘

Creazione di estensioni native con: ‘–with-mysql-lib = “c: \ Programmi (x86) \ Maria DB 5.5 \ lib” –with-mysql-include = “c: \ Programmi (x86) \ MariaDB 5.5 \ include \ mys ql “‘

Assicurati di usare i pacchetti MariaDB x64 se prevedi di usare Ruby x64. E, naturalmente, non dimenticare di copiare C: \ Programmi (x86) \ MariaDB 5.5 \ lib \ libmysql.dll in c: \ Ruby200 \ bin nel mio caso.

Copia il libmysql.dll che si trova nella directory bin della tua installazione MySQL nella directory bin della tua installazione di Ruby. I miei si trovavano in C: \ Programmi \ MySQL e C: \ Ruby.

questo è ciò che ha funzionato per me su Windows 8 a 64 bit e utilizzando Ruby a 64 bit

scarica e installa MYSQL Server 5.6 a 64 bit

quindi eseguire il comando:

gem install mysql2 -v ‘0.3.16’ – ‘–with-mysql-lib = “c: \ Programmi \ MySQL \ MySQL Server 5.6 \ lib” –with-mysql-include = “c: \ Programmi \ MySQL \ MySQL Server 5.6 \ include “”

spero che questo ti aiuti