mysql2 icon indicating copy to clipboard operation
mysql2 copied to clipboard

There is a problem when setting up Redmine and using bundle install to install mysql2 0.5.6

Open BraveWhite opened this issue 1 year ago • 5 comments

I have a problem when using bundle to install mysql2 0.5.6 My Ruby is "ruby 3.2.4 (2024-04-23 revision af471c0e01) [x64-mingw-ucrt]"

C:\Users\XXXX\Desktop\redmine-5.1.2>bundle install Fetching gem metadata from https://rubygems.org/......... Fetching mysql2 0.5.6 Installing mysql2 0.5.6 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/mysql2-0.5.6/ext/mysql2 C:/Ruby32-x64/bin/ruby.exe extconf.rb checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_gc_mark_movable()... yes checking for rb_wait_for_single_fd()... yes checking for rb_enc_interned_str() in ruby.h... yes *** 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:/Ruby32-x64/bin/$(RUBY_BASE_NAME) --with-openssl-dir --without-openssl-dir --with-mysql-dir --without-mysql-dir --with-mysql-include --without-mysql-include=${mysql-dir}/include --with-mysql-lib --without-mysql-lib=${mysql-dir}/lib --with-mysql-config --without-mysql-config --with-mysqlclient-dir --without-mysqlclient-dir --with-mysqlclient-include --without-mysqlclient-include=${mysqlclient-dir}/include --with-mysqlclient-lib --without-mysqlclient-lib=${mysqlclient-dir}/lib --with-mysqlclientlib --without-mysqlclientlib C:/Ruby32-x64/lib/ruby/3.2.0/mkmf.rb:1083:in block in find_library': undefined method split' for nil:NilClass (NoMethodError)

paths = paths.flat_map {|path| path.split(File::PATH_SEPARATOR)}
                                   ^^^^^^
    from C:/Ruby32-x64/lib/ruby/3.2.0/mkmf.rb:1083:in `each'
    from C:/Ruby32-x64/lib/ruby/3.2.0/mkmf.rb:1083:in `flat_map'
    from C:/Ruby32-x64/lib/ruby/3.2.0/mkmf.rb:1083:in `find_library'
    from extconf.rb:131:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

C:/Ruby32-x64/lib/ruby/gems/3.2.0/extensions/x64-mingw-ucrt/3.2.0/mysql2-0.5.6/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/mysql2-0.5.6 for inspection. Results logged to C:/Ruby32-x64/lib/ruby/gems/3.2.0/extensions/x64-mingw-ucrt/3.2.0/mysql2-0.5.6/gem_make.out

C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/builder.rb:119:in run' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/ext_conf_builder.rb:28:in build' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/builder.rb:187:in build_extension' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/builder.rb:221:in block in build_extensions' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/builder.rb:218:in each' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/ext/builder.rb:218:in build_extensions' C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/installer.rb:846:in build_extensions' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/rubygems_gem_installer.rb:72:in build_extensions' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/rubygems_gem_installer.rb:28:in install' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/source/rubygems.rb:202:in install' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/installer/gem_installer.rb:54:in install' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/installer/gem_installer.rb:16:in install_from_spec' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:156:in do_install' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:147:in block in worker_pool' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/worker.rb:62:in apply_func' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/worker.rb:57:in block in process_queue' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/worker.rb:54:in loop' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/worker.rb:54:in process_queue' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/worker.rb:90:in `block (2 levels) in create_threads'

An error occurred while installing mysql2 (0.5.6), and Bundler cannot continue.

In Gemfile: mysql2

If I use gem install mysql2 --platform=ruby -- --with-mysql-lib="C:\Program Files\MySQL\Connector C++ 8.0\lib64"

C:\Users\XXXX\Desktop\redmine-5.1.2>gem install mysql2 --platform=ruby -- --with-mysql-lib="C:\Program Files\MySQL\Connector C++ 8.0\lib64" Using msys2 packages: mingw-w64-ucrt-x86_64-libmariadbclient Building native extensions with: '--with-mysql-lib=C:\Program Files\MySQL\Connector C++ 8.0\lib64' This could take a while... Successfully installed mysql2-0.5.6 Parsing documentation for mysql2-0.5.6 Installing ri documentation for mysql2-0.5.6 Done installing documentation for mysql2 after 0 seconds 1 gem installed

It can work

But it will show

C:\Users\XXXX\Desktop\redmine-5.1.2>bundle exec rake generate_secret_token rake aborted! Bundler::GemRequireError: There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError) Gem Load Error is: Incorrect MySQL client library version! This gem was compiled for 10.8.8 but the client library is 3.3.8. Backtrace for gem load error is: internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in require' <internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in require' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/activesupport-6.1.7.7/lib/active_support/dependencies.rb:332:in block in require' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/activesupport-6.1.7.7/lib/active_support/dependencies.rb:299:in load_dependency' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/activesupport-6.1.7.7/lib/active_support/dependencies.rb:332:in require' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/mysql2-0.5.6/lib/mysql2.rb:36:in <top (required)>' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:60:in require' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:60:in block (2 levels) in require' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:55:in each' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:55:in block in require' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:44:in each' C:/Ruby32-x64/lib/ruby/3.2.0/bundler/runtime.rb:44:in require' C:/Ruby32-x64/lib/ruby/3.2.0/bundler.rb:187:in require' C:/Users/BHTRD/Desktop/redmine-5.1.2/config/application.rb:18:in <top (required)>' internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in require' <internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in require' C:/Users/BHTRD/Desktop/redmine-5.1.2/Rakefile:5:in <top (required)>' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/rake_module.rb:29:in load' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/rake_module.rb:29:in load_rakefile' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:740:in raw_load_rakefile' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:126:in block in load_rakefile' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:214:in standard_exception_handling' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:125:in load_rakefile' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:82:in block in run' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:214:in standard_exception_handling' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/lib/rake/application.rb:80:in run' C:/Ruby32-x64/lib/ruby/gems/3.2.0/gems/rake-13.2.1/exe/rake:27:in <top (required)>' C:/Ruby32-x64/bin/rake:32:in load' C:/Ruby32-x64/bin/rake:32:in <main>' Bundler Error Backtrace: C:/Users/BHTRD/Desktop/redmine-5.1.2/config/application.rb:18:in <top (required)>' internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in require' <internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in require' C:/Users/BHTRD/Desktop/redmine-5.1.2/Rakefile:5:in `<top (required)>'

Caused by: Incorrect MySQL client library version! This gem was compiled for 10.8.8 but the client library is 3.3.8. internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in require' <internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in require' C:/Users/BHTRD/Desktop/redmine-5.1.2/config/application.rb:18:in <top (required)>' <internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:38:in require' internal:C:/Ruby32-x64/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in require' C:/Users/BHTRD/Desktop/redmine-5.1.2/Rakefile:5:in <top (required)>' (See full trace by running task with --trace)

How can i Fix it??

BraveWhite avatar May 21 '24 06:05 BraveWhite

You may try to install mysql2 gem before installing Redmine. In my case, I use MySQL 5.7. The command to install mysql2 is:

gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\Program%20Files\MySQL\MySQL%20Server%205.7\lib" --with-mysql-include="C:\Program%20Files\MySQL\MySQL%20Server%205.7\include" --with-mysql-dir="C:\Program%20Files\MySQL\MySQL%20Server%205.7"'

However, please see https://github.com/brianmario/mysql2/issues/1348 because there is a problem with starting mysql2 gem afterwards. See my comment of how I resolved the problem in my case.

jwalkerbg avatar May 21 '24 18:05 jwalkerbg

Thank you for your answer I'll try it later

BraveWhite avatar May 22 '24 14:05 BraveWhite

Hi all, I'm facing the same issue when using RubyMine IDE.

Config: Ruby 3.3.6, Rails 8.0.0, MySQL 8.4.0 and the mysql2 0.5.6 gem.

I get the following error: 'There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError) Gem Load Error is: Incorrect MySQL client library version! This gem was compiled for 10.8.8 but the client library is 3.4.1.'

Any help will be much appreciated, thanks!

radox83 avatar Nov 22 '24 16:11 radox83

Hi all, I'm facing the same issue when using RubyMine IDE.

Config: Ruby 3.3.6, Rails 8.0.0, MySQL 8.4.0 and the mysql2 0.5.6 gem.

I get the following error: 'There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError) Gem Load Error is: Incorrect MySQL client library version! This gem was compiled for 10.8.8 but the client library is 3.4.1.'

Any help will be much appreciated, thanks!

did you get it solved?

diddyp20 avatar Jan 12 '25 02:01 diddyp20

@diddyp20 , not yet. I used my work MacBook Pro to run it, but I'm looking into a fix for this now. Will update as soon as I make it work.

radox83 avatar Jan 15 '25 19:01 radox83