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

Rundeck CE 4.8部署MariaDB数据库异常排查求助

问题解决与疑问解答

核心错误分析

日志中的errno: 121 "Duplicate key on write or update"是MariaDB的约束冲突错误,原因是数据库中残留了未完成的表结构或重复的约束名称,导致Liquibase自动执行schema变更时失败。


分步解决方案

1. 重建干净的数据库环境

登录MariaDB执行以下命令:

-- 删除现有数据库
DROP DATABASE rundeck;
-- 重新创建数据库(指定utf8mb4编码避免字符集问题)
CREATE DATABASE rundeck CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 重新授权用户
GRANT ALL PRIVILEGES ON rundeck.* TO 'rundeckuser'@'%' IDENTIFIED BY '你的密码';
-- 刷新权限
FLUSH PRIVILEGES;

2. 修正Rundeck配置文件

调整rundeck-config.properties的关键配置项:

# 保留自动更新schema的设置
dataSource.dbCreate = update
# 优化JDBC URL,添加字符集参数
dataSource.url = jdbc:mysql://mysql.rundeck.local/rundeck?autoReconnect=true&useSSL=false&characterEncoding=utf8mb4
# 确保Liquibase自动更新开关开启
grails.plugin.databasemigration.updateOnStart=true

3. 验证数据库用户权限

用rundeckuser登录MariaDB,执行以下命令验证权限:

-- 查看用户权限
SHOW GRANTS FOR 'rundeckuser'@'%';
-- 测试写入权限
CREATE TABLE test(id INT);
DROP TABLE test;

如果能成功执行建表和删表操作,说明用户具备完整的写入权限。

4. 清理Rundeck临时缓存

删除Rundeck安装目录下的临时文件:

rmdir /s /q E:/rundeck/server/tmp

然后重新启动Rundeck服务。


疑问解答

  • 数据库Schema设置方法:Rundeck 4.x版本通过内置的Liquibase工具自动创建和维护数据库Schema,无需手动执行脚本,只要数据库连接配置正确,启动时会自动完成表结构初始化。
  • 是否需要从H2迁移:不需要。全新部署时直接配置MariaDB作为初始数据库即可,只有当你已经使用H2运行并需要保留现有数据时,才需要执行迁移操作。
  • 权限检查方式:通过上述的SHOW GRANTS命令查看授权,或手动执行建表/删表操作验证写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:10:45