变更内容: 1. 删除 maintainItemId 字段(冗余,无实际作用) 2. 保留 maintainItem 字段(直接存储项目名称) 3. 新增接口:获取已使用的保养项目列表(去重) 4. 前端可使用该接口提供下拉提示,提升用户体验 5. 添加 maintainItem 字段的非空校验 设计思路: - 不引入保养项目字典表(避免过度设计) - 通过 DISTINCT 查询提供已使用项目列表 - 用户可以输入新项目,也可以从已有项目中选择 - 后续如需规范化,可平滑升级到字典表方案
6.8 KiB
6.8 KiB
数据库连接问题分析报告
🔍 问题分析
核心问题
数据库名称不匹配!
详细对比
1. 老项目(已废弃)
- 项目路径:
~/.openclaw/workspace/yudao-asset-cloud/ - 数据库名称:
yudao_asset(单独的资产管理数据库) - 连接方式: 可能是直接 IP 连接或本地开发环境
- SQL 脚本: 针对
yudao_asset数据库设计
2. 新项目(当前)
- 项目路径:
/Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend/ - 数据库架构: 微服务架构,多个数据库
oneos_system- 系统模块oneos_infra- 基础设施模块oneos_bpm- 工作流模块- 没有
yudao_asset或oneos_asset!
- 连接方式: Docker 容器(oneos-mysql)
- 部署环境: Docker Compose 部署在 47.103.115.36
为什么之前可以连接?
答案:之前的项目和现在的项目不是同一个!
-
老项目(yudao-asset-cloud)
- 独立的资产管理系统
- 使用独立的
yudao_asset数据库 - 可能在本地开发环境或测试服务器
- 已被废弃并删除
-
新项目(ln-oneos)
- 完整的 ONE-OS 系统
- 微服务架构,多个数据库
- Docker 部署在生产服务器
- 资产模块需要集成到现有数据库中
🎯 解决方案
方案 1:使用 oneos_system 数据库(推荐)
理由:
- 系统模块是核心模块
- 资产管理属于系统基础数据
- 配置已存在,无需额外配置
操作:
# 1. 登录服务器
ssh root@47.103.115.36
# 2. 执行 SQL(使用 oneos_system 数据库)
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-2026-03-12-停车场和车型参数模块.sql
# 3. 验证
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "SHOW TABLES LIKE 'asset_%';"
方案 2:创建独立的 oneos_asset 数据库
理由:
- 资产管理模块独立
- 便于数据隔离和管理
- 符合微服务架构
操作:
# 1. 登录服务器
ssh root@47.103.115.36
# 2. 创建数据库
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "CREATE DATABASE IF NOT EXISTS oneos_asset DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 3. 执行 SQL
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset < /tmp/update-2026-03-12-停车场和车型参数模块.sql
# 4. 验证
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset -e "SHOW TABLES LIKE 'asset_%';"
额外配置:
需要创建 asset-server-dev.yaml 配置文件:
server:
port: 48084
spring:
datasource:
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://oneos-mysql:3306/oneos_asset?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
username: root
password: Passw0rd2026
slave:
lazy: true
url: jdbc:mysql://oneos-mysql:3306/oneos_asset?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
username: root
password: Passw0rd2026
data:
redis:
database: 4
cloud:
nacos:
discovery:
namespace: dev
config:
namespace: dev
yudao:
info:
base-package: cn.iocoder.yudao.module.asset
📊 两种方案对比
| 对比项 | 方案 1:使用 oneos_system | 方案 2:创建 oneos_asset |
|---|---|---|
| 实施难度 | ⭐ 简单 | ⭐⭐ 中等 |
| 配置工作 | 无需额外配置 | 需要创建配置文件 |
| 数据隔离 | 与系统数据混合 | 完全隔离 |
| 微服务架构 | 不符合 | 符合 |
| 维护成本 | 低 | 中 |
| 推荐指数 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
🔧 推荐方案
短期方案(快速验证)
使用方案 1:oneos_system 数据库
- 优点:快速验证功能,无需额外配置
- 缺点:不符合微服务架构
长期方案(生产部署)
使用方案 2:oneos_asset 数据库
- 优点:符合微服务架构,数据隔离
- 缺点:需要额外配置
📝 更新后的操作步骤
步骤 1:选择方案并执行数据库迁移
方案 1(推荐用于快速测试):
ssh root@47.103.115.36
# 上传 SQL 文件后
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-2026-03-12-停车场和车型参数模块.sql
方案 2(推荐用于生产环境):
ssh root@47.103.115.36
# 创建数据库
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 -e "CREATE DATABASE IF NOT EXISTS oneos_asset DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 执行 SQL
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_asset < /tmp/update-2026-03-12-停车场和车型参数模块.sql
步骤 2:配置应用(仅方案 2 需要)
创建 Nacos 配置:
cd /Users/kkfluous/Projects/ai-coding/ln-oneos/nacos-config
# 创建 asset-server-dev.yaml
cat > asset-server-dev.yaml << 'EOF'
# 配置内容见上文
EOF
# 上传到 Nacos(如果使用 Nacos)
# 或者在服务器上手动配置
步骤 3:启动服务
cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend
# 如果使用方案 1,直接启动
mvn spring-boot:run
# 如果使用方案 2,需要先上传配置到 Nacos
💡 经验教训
1. 项目迁移要注意数据库架构变化
- 老项目:单体架构,单一数据库
- 新项目:微服务架构,多个数据库
- 不能直接复用老项目的 SQL 脚本!
2. 开发前要确认目标环境
- 数据库名称
- 数据库架构
- 部署方式(Docker/本地)
- 网络环境
3. 文档要及时更新
- SQL 脚本中的数据库名称
- 配置文件中的数据库连接
- 部署文档中的环境说明
🎯 下一步操作
立即执行(推荐方案 1)
# 1. 登录服务器
ssh root@47.103.115.36
# 2. 创建 SQL 文件
cat > /tmp/update-asset.sql << 'EOF'
# 复制 sql/update-2026-03-12-停车场和车型参数模块.sql 的内容
EOF
# 3. 执行 SQL
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-asset.sql
# 4. 验证
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "SHOW TABLES LIKE 'asset_%';"
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "DESC asset_parking;"
docker exec oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system -e "DESC asset_vehicle_model;"
后续优化(方案 2)
- 创建独立的 oneos_asset 数据库
- 配置 asset-server-dev.yaml
- 上传配置到 Nacos
- 重新部署服务
创建时间: 2026-03-12 01:40
状态: 问题已分析,等待选择方案执行