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

Rundeck社区版从3.4.0升级至4.8.0后服务无法启动

Rundeck社区版3.4.0升级至4.8.0后服务无法启动问题

将Rundeck社区版3.4.0通过.deb安装包升级到4.8.0版本后,服务无法正常运行。

服务状态信息

● rundeckd.service - LSB: rundeck job automation console
     Loaded: loaded (/etc/init.d/rundeckd; generated)
     Active: failed (Result: exit-code) since Sat 2023-02-18 13:35:29 IST; 19min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 64462 ExecStart=/etc/init.d/rundeckd start (code=exited, status=0/SUCCESS)
   Main PID: 64472 (code=exited, status=1/FAILURE)

Feb 18 13:35:04 dockermachine systemd[1]: Starting LSB: rundeck job automation console...
Feb 18 13:35:04 dockermachine rundeckd[64462]:  * Starting rundeckd
Feb 18 13:35:04 dockermachine rundeckd[64462]:    ...done.
Feb 18 13:35:04 dockermachine systemd[1]: Started LSB: rundeck job automation console.
Feb 18 13:35:29 dockermachine systemd[1]: rundeckd.service: Main process exited, code=exited, status=1/FAILURE
Feb 18 13:35:29 dockermachine systemd[1]: rundeckd.service: Failed with result 'exit-code'.

Service.log日志内容

[2023-02-18T13:35:11,169] INFO  rundeckapp.Application - 当前激活的配置文件为:"production"

正在配置Spring Security Core...
... Spring Security Core配置完成

[2023-02-18T13:35:26,201] ERROR pool.ConnectionPool - 无法创建连接池初始连接。
org.h2.jdbc.JdbcSQLNonTransientException: 通用错误: "写入格式1小于支持的格式2 [2.1.210/5]" [50000-210]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:573) ~[h2-2.1.210.jar!/:?]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) ~[h2-2.1.210.jar!/:?]
        at org.h2.message.DbException.get(DbException.java:216) ~[h2-2.1.210.jar!/:?]
        at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:166) ~[h2-2.1.210.jar!/:?]
        at org.h2.mvstore.db.Store.<init>(Store.java:140) ~[h2-2.1.210.jar!/:?]
        at org.h2.engine.Database.<init>(Database.java:324) ~[h2-2.1.210.jar!/:?]
        at org.h2.engine.Engine.openSession(Engine.java:92) ~[h2-2.1.210.jar!/:?]
        at org.h2.engine.Engine.openSession(Engine.java:222) ~[h2-2.1.210.jar!/:?]
        at org.h2.engine.Engine.createSession(Engine.java:201) ~[h2-2.1.210.jar!/:?]
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338) ~[h2-2.1.210.jar!/:?]
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122) ~[h2-2.1.210.jar!/:?]
        at org.h2.Driver.connect(Driver.java:59) ~[h2-2.1.210.jar!/:?]
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:744) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:676) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-9.0.44.jar!/:?]
        at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy.afterPropertiesSet(LazyConnectionDataSourceProxy.java:164) ~[spring-jdbc-5.3.20.jar!/:5.3.20]
        at org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy.<init>(LazyConnectionDataSourceProxy.java:108) ~[spring-jdbc-5.3.20.jar!/:5.3.20]
        at org.grails.datastore.gorm.jdbc.connections.DataSourceConnectionSourceFactory.proxy(DataSourceConnectionSourceFactory.java:100) ~[grails-datastore-gorm-7.2.1.jar!/:?]
        at org.grails.datastore.gorm.jdbc.connections.DataSourceConnectionSourceFactory.create(DataSourceConnectionSourceFactory.java:93) ~[grails-datastore-gorm-7.2.1.jar!/:?]
        at org.grails.datastore.gorm.jdbc.connections.CachedDataSourceConnectionSourceFactory.create(CachedDataSourceConnectionSourceFactory.java:37) ~[grails-datastore-gorm-7.2.1.jar!/:?]

问题分析与解决步骤

问题根源

日志中的错误信息明确指向H2数据库版本兼容性问题:Rundeck 3.4.0使用的低版本H2生成了v1格式的数据库文件,而升级后的Rundeck 4.8.0搭载的H2 2.1.210版本仅支持v2及以上格式,无法直接读取旧格式文件。

解决步骤

  1. 备份数据库文件
    默认H2数据库文件路径为/var/lib/rundeck/data/rundeckdb.mv.db,先执行备份:

    sudo cp /var/lib/rundeck/data/rundeckdb.mv.db /var/lib/rundeck/data/rundeckdb.mv.db.backup
    
  2. 修改数据库连接配置
    编辑/etc/rundeck/rundeck-config.properties文件,找到dataSource.url配置项,在末尾添加兼容参数:

    dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MODE=LEGACY;DATABASE_TO_LOWER=TRUE;AUTO_SERVER=TRUE
    
  3. 启动服务并验证

    sudo systemctl start rundeckd
    sudo systemctl status rundeckd
    

    服务启动成功后,H2会自动将旧格式数据库文件升级为新版本支持的格式。

  4. (可选)移除兼容参数
    服务稳定运行后,可删除配置中的MODE=LEGACY参数,使用H2新版本默认配置,避免后续兼容性隐患。


内容的提问来源于stack exchange,提问作者Riya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08