我正在使用JRuby 1.7.2和DataMapper,我收到一个错误,我找不到答案。
我只是测试DataMapper和MySQL 5.5,看看它是否会在我构建它时运行正常。这是我正在测试的文件:
require "data_mapper"
require "keys"
DataMapper.setup(:default, "mysql://#{$user}:#{$pass}@localhost/test_db")
当我运行时,我收到错误:
NameError: cannot load Java class com.mysql.jdbc.Driver
它指向DataMapper.setup行。
我的Gemfile应该没问题:
source :rubygems
gem "sinatra"
gem "trinidad"
gem "data_mapper"
# do a `sudo apt-get install libmysqlclient-dev` first
gem "dm-mysql-adapter"
gem "jdbc-mysql"
有什么我想念的吗?我已经在本地设置了用户/传递的MySQL。
答案 0 :(得分:7)
为JDBC
运行MySQL
个客户端时,这是一个常见错误。您需要确保在类路径上有mysql-connector-java-bin.jar
。您可以从here下载。
答案 1 :(得分:7)
我正在使用Rails 3.2.9并解决了我将此问题添加到我的application.rb
的问题if defined? JRUBY_VERSION
require 'jdbc/mysql'
Jdbc::MySQL.load_driver
end
答案 2 :(得分:2)
实际上,正确的答案是解决 5.1.13 和 5.1.22 之间的不兼容问题!
jdbc-mysql gem已经包含了mysql-connector.jar,它不再自动加载了:
https://github.com/jruby/activerecord-jdbc-adapter/tree/master/jdbc-mysql(阅读自述文件)
您还可以使用Java系统属性强制驱动程序自动加载,例如从cmd行:
jruby -J-Darjdbc.mysql.autoload=true -S rake ...
答案 3 :(得分:0)
尝试使用jruby / rails4中的mysql数据库时遇到了同样的错误。在我的情况下,./Gemfile:
中缺少这一行gem 'jdbc-mysql'