I have a Rails 3.2.13
app that I would like deployed, but the hosting service would require MySQL, as opposed to sqlite which I have been using.
In the process of converting from sqlite
to MySQL
, I had to install the ruby gem mysql2
, which is giving me the following error upon installing:
Error installing mysql2: ERROR: Failed to build gem native extension.
I've tried both bundle install
, as well as gem install mysql2
, but the same error message appeared.
I am aware that the solution that has worked for many is sudo apt-get install libmysql-ruby libmysqlclient-dev
, but I'm using Git Bash on Windows , so I found a Windows equivalent (@francois's answer on this question ). I installed MySQL Server 5.6
with the installer, and ran the following command:
gem install mysql2 -- '--with-mysql-lib="c:\Program Files\MySQL\MySQL Server 5.6\lib" --with-mysql-include="c:\Program Files\MySQL\MySQL Server 5.6\include"'
From what I have read, this is supposed to successfully install the 'mysql2' ruby gem. But strangely enough, I still had the following error:
Temporarily enhancing PATH to include DevKit... Building native extensions with: '--with-mysql-lib="c:\\Program
Files\\MySQL\\MySQL Server 5.6\\lib" --with-mysql-include="c:\\Program Files\\MySQL\\MySQL Server 5.6\\i nclude"' This could take a while... ERROR: Error installing mysql2: ERROR: Failed to build gem native extension.
c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb --with-mysql-lib="c:\\Pro gram Files\\MySQL\\MySQL Server 5.6\\lib" --with-mysql-include="c:\\Program Files\\My SQL\\MySQL Server 5.6\\include" checking for rb_thread_blocking_region()... yes checking for rb_wait_for_single_fd()... yes checking for rb_hash_dup()... yes
checking for rb_intern3()... yes checking for main() in -llibmysql... yes checking for mysql.h... yes checking for errmsg.h... yes checking for mysqld_error.h... yes creating Makefile
make generating mysql2-i386-mingw32.def compiling client.c client.c: In function 'rb_raise_mysql2_error': client.c:139:3:
warning: ISO C90 forbids mixed declarations and code client.c: In function 'finish_and_mark_inactive': client.c:508:3: warning: ISO C90 forbids mixed declarations and code client.c: In function 'rb_mysql_client_abandon_results': client.c:535:3: warning: ISO C90 forbids mixed declarations and code client.c: In function 'rb_mysql_client_next_result': client.c:938:5: warning: ISO C90 forbids mixed declarations and code compiling mysql2_ext.c compiling result.c result.c: In function 'rb_mysql_result_fetch_fields': result.c:407:35: warning: comparison between signed and unsigned integer express ions linking shared-object mysql2/mysql2.so client.o: In function
nogvl_connect': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:158: undefined reference to
mysql_real_connect@32' client.o: In functionnogvl_init': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:150: undefined reference to
mysql_init@4' client.o: In func tionset_ssl_options': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:1078: undefined reference to
mysql_ssl_set@24' client.o: In functionmysql_client_options': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:723: undefined reference to
mysql_options@12' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:727: undefined reference tomysql_error@4' client.o: In function
rb_mysql_info': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:267: undefined reference tomysql_info@4' client.o: In function
rb_mysql_client_warning_count': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:257: undefined reference tomysql_warning_count@4' client.o: In function
nogvl_do_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:370: undefined reference tomysql_store_result@4' client.o: In function
mysql_store_result@4' client.o: In function
rb_mysql_client_more_results': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:923: undefined reference tomysql_more_results@4' client.o: In function
nogvl_select_db': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:863: undefined reference tomysql_select_db@8' client.o: In function
nogvl_ping': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:894: undefined reference tomysql_ping@4' client.o: In function
rb_mysql_client_thread_id': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:856: undefined reference tomysql_thread_id@4' client.o: In function
rb_mysql_client_last_id': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:825: undefined reference tomysql_insert_id@4' client.o: In function
nogvl_read_query_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9. 1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:357: undefined reference tomysql_read_query_result@4' client.o: In function
rb_mysql_client_server_info': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:788: undefined reference tomysql_get_server_version@4' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:789: undefined reference to
mysql_get_server_info@4' client.o: In functionrb_mysql_client_info': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:756: undefined reference to
mysql_get_client_version@0' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:757: undefined reference tomysql_get_client_info@0' client.o: In function
rb_mysql_client_real_escape': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:662: undefined reference tomysql_real_escape_string@16' client.o: In function
finish_and_mark_i nactive': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:515: undefined reference tomysql_free_result@4' client.o: In function
nogvl_send_query': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:334: undefined reference tomysql_send_query@12' client.o: In function
nogvl_close': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:190: undefined reference tomysql_close@4' client.o: In function
rb_mysql_client_escape': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:238: undefined reference tomysql_escape_string@12' client.o: In function
rb_raise_mysql2_error': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:125: undefined reference tomysql_error@4' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:126: undefined reference to
mysql_sqlstate@4' c:\\RailsIn staller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:140: undefined reference tomysql_errno@4' client.o: In function
rb_connect': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:297: undefined reference tomysql_errno@4' client.o: In function
rb_mysql_client_store_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:966: undefined reference tomysql_errno@4' client.o: In function
rb_mysql_client_next_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:939: undefined reference tomysql_next_result@4' client.o: In function
rb_mysql_client_affected_rows': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:839: undefined reference tomysql_affected_rows@4' client.o: In function
rb_mysql_client_async_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:419: u ndefined reference tomysql_errno@4' client.o: In function
rb_mysql_client_abandon_results': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:539: undefined reference tomysql_next_result@4' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:538: undefined reference to
mysql_more_results@4' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:547: undefined reference tomysql_free_result@4' client.o: In function
nogvl_do_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:368: undefined reference tomysql_use_result@4' client.o: In function
nogvl_close': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:190: undefined reference tomysql_close@4' client.o: In function
set_charset_name': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:1067: undefined referen ce tomysql_options@12' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:1069: undefined reference to
mysql_error@4' client.o: In functioninit_mysql2_client': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/cl ient.c:1105: undefined reference to
mysql_get_client_info@0' result.o: In functionrb_mysql_result_count': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:576: undefined reference to
mysql_num_rows@4' result.o: In functionrb_mysql_result_fetch_field': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:126: undefined reference to
mysql_fetch_field_direct@8' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:114: undefined reference tomysql_num_fields@4' result.o: In function
rb_mysql_result_fetch_fields': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:403: u ndefined reference tomysql_num_fields@4' result.o: In function
nogvl_fetch_row': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:105: undefined reference tomysql_fetch_row@4' result.o: In function
rb_mysql_result_free_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:75: undefined reference tomysql_free_result@4' result.o: In function
rb_mysql_result_fetch_row': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:213: undefined reference tomysql_fetch_lengths@4' c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:215: undefined reference to
mysql_num_fields@4' result.o: In functionrb_mysql_result_each': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:503: undefined reference to
mysql_fetch_fields@4' result.o: In functionrb_mysql_result_free_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:75: undefined reference to
rb_mysql_result_free_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:75: undefined reference to
mysql_free_result@4' result.o: In functionrb_mysql_result_each': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:531: undefined reference to
mysql_fetch_fields@4' result.o: In functionrb_mysql_result_free_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:75: undefined reference to
mysql_free_result@4' result.o: In functionrb_mysql_result_each': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:490: undefined reference to
mysql_num_rows@4' result.o: In functionrb_mysql_result_free_result': c:\\RailsInstaller\\Ruby1.9.3\\lib\\ruby\\gems\\1.9.1\\gems\\mysql2-0.3.13\\ext\\mysql2/re sult.c:75: undefined reference to
mysql_free_result@4' collect2: ld returned 1 exit status make: *** [mysql2.so] Error 1Gem files will remain installed in c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9 .1/gems/mysql2-0.3.13
for inspection. Results logged to c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/mysql2-0. 3.13/ext/mysql2/gem_make.out
Can anyone please help? I am having much trouble comprehending what's wrong with the installation.
I had this same error on Win64 environment.
I tested a lot of solutions but the only that worked for me was:
I've been so annoyed by the same problem, and finally succeeded in installing mysql2
. Kudos to odiszapc@github . It appears any other solution I've found via Google than below doesn't work to me.
Copied and pasted from here . So no credit to me.
gem uninstall mysql2
Download last MySQL connector from http://cdn.mysql.com/Downloads/Connector-C/mysql- connector-c-noinstall-6.0.2-win32.zip
Extract it to C:\connector-6.0.2
gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\connector-6.0.2\lib" --with-mysql-include="C:\connector-6.0.2\include" --with-mysql-dir="C:\connector-6.0.2"'
Additional info on mine.
PS Even if you successfully installed mysql2
, you may still need some work (eg mysql2.so (LoadError)), and it has something do with libmysql
in my case, and seems like yet another major glitch about mysql2.
I am installing on Windows 7 64 bit. What worked for me was:
Download the C 32 bit connector archive from: http://dev.mysql.com/downloads/connector/c/
I extracted it to C:\\Temp. If you use a different directory, adjust the next command.
gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:\Temp\mysql-connector-c-6.1.3-win32"'
pain... lot of pain. Finally working doing:
(Platform: Windows64bits, Ruby32bits, DevKit32bits...)
And I got mysql2 v0.3.17 up and running...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.