mysql - 在 jruby 上安装 mysql 有很多错误

标签 mysql ruby-on-rails ruby jruby

我正在尝试安装 mysql gem 以便在 rails 上使用,使用 jruby,无法解决这个问题......感谢任何帮助!

$ sudo gem install mysql2

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/masedesign/Work/repos/code/conf/vms/ruby/jruby/bin/jruby extconf.rb
WARNING: JRuby does not support native extensions or the `mkmf' library very well.
Check http://kenai.com/projects/jruby/pages/Home for alternatives.
checking for rb_thread_blocking_region()... checking for rb_wait_for_single_fd()... no
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile

make
cc -I. -I. -I/Users/masedesign/Work/repos/code/conf/vms/ruby/jruby/lib/native/include/ruby -I. -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE        -I/usr/local/mysql/include  -g -Os -arch x86_64 -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fPIC -DTARGET_RT_MAC_CFM=0  -fno-omit-frame-pointer -fno-strict-aliasing  -fexceptions   -Wall -funroll-loops  -arch x86_64 -c client.c
cc -I. -I. -I/Users/masedesign/Work/repos/code/conf/vms/ruby/jruby/lib/native/include/ruby -I. -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE        -I/usr/local/mysql/include  -g -Os -arch x86_64 -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fPIC -DTARGET_RT_MAC_CFM=0  -fno-omit-frame-pointer -fno-strict-aliasing  -fexceptions   -Wall -funroll-loops  -arch x86_64 -c mysql2_ext.c
cc -I. -I. -I/Users/masedesign/Work/repos/code/conf/vms/ruby/jruby/lib/native/include/ruby -I. -DHAVE_RB_THREAD_BLOCKING_REGION -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE        -I/usr/local/mysql/include  -g -Os -arch x86_64 -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fPIC -DTARGET_RT_MAC_CFM=0  -fno-omit-frame-pointer -fno-strict-aliasing  -fexceptions   -Wall -funroll-loops  -arch x86_64 -c result.c
cc -dynamic -bundle -undefined dynamic_lookup  -o mysql2.bundle client.o mysql2_ext.o result.o -L"." -L"/Users/masedesign/Work/repos/code/conf/vms/ruby/jruby-1.6.5/lib" -bundle -framework JavaVM -Wl,-syslibroot, -mmacosx-version-min=10.4  -Wl,-rpath,/usr/local/mysql/lib  -arch x86_64  -L/usr/local/mysql/lib -lmysqlclient_r -lz -lm     -lmygcc   
ld: library not found for -lbundle1.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1


Gem files will remain installed in /Users/masedesign/Work/repos/code/conf/vms/ruby/jruby-1.6.5/lib/ruby/gems/1.8/gems/mysql2-0.3.11 for inspection.
Results logged to /Users/masedesign/Work/repos/code/conf/vms/ruby/jruby-1.6.5/lib/ruby/gems/1.8/gems/mysql2-0.3.11/ext/mysql2/gem_make.out

最佳答案

mysql gem 仅针对 MRI (Ruby 1.8) 开发和测试。因此,它的大部分实现都使用旧式 C 扩展。虽然 JRuby 在技术上支持它们,但它们速度慢且容易出错。所以不要使用它们。

如果您使用 JRuby,您最好使用 JDBC 适配器,它使用 java-native 数据库接口(interface),因此速度更快,支持也更好。高级接口(interface)(例如 Rails 使用的接口(interface))大致相同,您应该不会注意到任何差异。

因此,对于 JRuby,您应该使用 jdbc-mysql gem,或者 - 如果您使用 Rails - activerecord-jdbcmysql-adapter gem,它需要该 gem 并添加适当的数据库适配器。

关于mysql - 在 jruby 上安装 mysql 有很多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9865450/

相关文章:

php - 将来自 mysql 的数据处理为 html

mysql - Sequelize 属于ToMany 不起作用

ruby-on-rails - 强参数需要多个

ruby-on-rails - 以编程方式检测并捕获 Rails 中的无限重定向循环

java - 有没有办法让 Jruby 运行时实习所有字符串?

php - 动态刷新div内容

mysql - 让 ruby​​ activerecord 与 mysql 适配器一起工作

ruby-on-rails - 如何将收到的短信(通过 twilio)与我的 Rails 应用程序中的特定用户关联

ruby - Ruby 上的 std::endl 等效项?

ruby - ruby 类变量中访问器方法的简写