You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JRuby 9.2.20.0 + Rails 6.x项目中配置使用H2数据库

问题1:JRuby 9.2.20.0 + Rails 6 项目集成H2数据库解决方案

报错原因

你遇到的参数错误是因为直接使用通用jdbc适配器缺少H2数据库的专属适配逻辑,旧版activerecord-jdbch2-adapter确实不兼容Rails 6,但Rails 6对应的activerecord-jdbc-adapter 60.x版本已经内置了H2支持,不需要额外安装旧的H2适配器。

操作步骤

  1. 调整Gemfile依赖
# 保留原有Rails 6要求的jdbc适配器版本
gem 'activerecord-jdbc-adapter', '~> 60.4'
# 添加H2的JDBC驱动依赖
gem 'jdbc-h2', '~> 2.1'

执行bundle install安装依赖。
2. 修改config/database.yml配置
不要使用通用adapter: jdbc,直接指定内置的H2适配器:

default: &default
  adapter: h2
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: sa
  password:

development:
  <<: *default
  url: jdbc:h2:./db/development;AUTO_SERVER=TRUE;DATABASE_TO_UPPER=false

test:
  <<: *default
  url: jdbc:h2:./db/test;DATABASE_TO_UPPER=false

production:
  <<: *default
  url: jdbc:h2:./db/production;AUTO_SERVER=TRUE;DATABASE_TO_UPPER=false

参数说明:

  • AUTO_SERVER=TRUE:开启多连接模式,允许同时从进程外访问同一份数据库文件
  • DATABASE_TO_UPPER=false:禁止H2自动将表名、字段名转换为大写,适配Rails默认的小写命名规则
  • 如果需要开启PostgreSQL兼容模式,可在url末尾追加;MODE=PostgreSQL
  1. 执行迁移
    H2是嵌入式数据库,不需要手动执行rails db:create,第一次连接时会自动创建数据库文件,直接执行:
rails db:migrate

即可完成迁移,数据库文件会自动生成在项目db目录下。

问题2:普通CRuby项目的H2集成方案

H2是基于JVM运行的数据库,原生只支持Java生态调用,普通CRuby没有生产级的成熟直接集成方案。如果有嵌入式数据库需求,CRuby生态更推荐使用SQLite,有完善的官方ActiveRecord适配器和全生态支持,功能覆盖H2嵌入式模式的绝大多数使用场景。
如果一定要在CRuby中使用H2,只能采用间接方案:将H2作为独立TCP服务启动,通过Ruby的JDBC桥接库调用驱动连接,但该方案性能损耗大、维护成本高,不建议在生产环境使用。


内容的提问来源于stack exchange,提问作者F.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:45:08