refactor(asset): 优化保养项目设计,使用折中方案
变更内容: 1. 删除 maintainItemId 字段(冗余,无实际作用) 2. 保留 maintainItem 字段(直接存储项目名称) 3. 新增接口:获取已使用的保养项目列表(去重) 4. 前端可使用该接口提供下拉提示,提升用户体验 5. 添加 maintainItem 字段的非空校验 设计思路: - 不引入保养项目字典表(避免过度设计) - 通过 DISTINCT 查询提供已使用项目列表 - 用户可以输入新项目,也可以从已有项目中选择 - 后续如需规范化,可平滑升级到字典表方案
This commit is contained in:
239
DATABASE_CONNECTION_ANALYSIS.md
Normal file
239
DATABASE_CONNECTION_ANALYSIS.md
Normal file
@@ -0,0 +1,239 @@
|
||||
# 数据库连接问题分析报告
|
||||
|
||||
## 🔍 问题分析
|
||||
|
||||
### 核心问题
|
||||
**数据库名称不匹配!**
|
||||
|
||||
### 详细对比
|
||||
|
||||
#### 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
|
||||
|
||||
### 为什么之前可以连接?
|
||||
|
||||
**答案:之前的项目和现在的项目不是同一个!**
|
||||
|
||||
1. **老项目**(yudao-asset-cloud)
|
||||
- 独立的资产管理系统
|
||||
- 使用独立的 `yudao_asset` 数据库
|
||||
- 可能在本地开发环境或测试服务器
|
||||
- 已被废弃并删除
|
||||
|
||||
2. **新项目**(ln-oneos)
|
||||
- 完整的 ONE-OS 系统
|
||||
- 微服务架构,多个数据库
|
||||
- Docker 部署在生产服务器
|
||||
- 资产模块需要集成到现有数据库中
|
||||
|
||||
## 🎯 解决方案
|
||||
|
||||
### 方案 1:使用 oneos_system 数据库(推荐)
|
||||
|
||||
**理由**:
|
||||
- 系统模块是核心模块
|
||||
- 资产管理属于系统基础数据
|
||||
- 配置已存在,无需额外配置
|
||||
|
||||
**操作**:
|
||||
```bash
|
||||
# 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 数据库
|
||||
|
||||
**理由**:
|
||||
- 资产管理模块独立
|
||||
- 便于数据隔离和管理
|
||||
- 符合微服务架构
|
||||
|
||||
**操作**:
|
||||
```bash
|
||||
# 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` 配置文件:
|
||||
```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(推荐用于快速测试)**:
|
||||
```bash
|
||||
ssh root@47.103.115.36
|
||||
# 上传 SQL 文件后
|
||||
docker exec -i oneos-mysql mysql -uroot -pPassw0rd2026 oneos_system < /tmp/update-2026-03-12-停车场和车型参数模块.sql
|
||||
```
|
||||
|
||||
**方案 2(推荐用于生产环境)**:
|
||||
```bash
|
||||
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 配置:
|
||||
```bash
|
||||
cd /Users/kkfluous/Projects/ai-coding/ln-oneos/nacos-config
|
||||
|
||||
# 创建 asset-server-dev.yaml
|
||||
cat > asset-server-dev.yaml << 'EOF'
|
||||
# 配置内容见上文
|
||||
EOF
|
||||
|
||||
# 上传到 Nacos(如果使用 Nacos)
|
||||
# 或者在服务器上手动配置
|
||||
```
|
||||
|
||||
### 步骤 3:启动服务
|
||||
|
||||
```bash
|
||||
cd /Users/kkfluous/Projects/ai-coding/ln-oneos/oneos-backend
|
||||
|
||||
# 如果使用方案 1,直接启动
|
||||
mvn spring-boot:run
|
||||
|
||||
# 如果使用方案 2,需要先上传配置到 Nacos
|
||||
```
|
||||
|
||||
## 💡 经验教训
|
||||
|
||||
### 1. 项目迁移要注意数据库架构变化
|
||||
- 老项目:单体架构,单一数据库
|
||||
- 新项目:微服务架构,多个数据库
|
||||
- **不能直接复用老项目的 SQL 脚本!**
|
||||
|
||||
### 2. 开发前要确认目标环境
|
||||
- 数据库名称
|
||||
- 数据库架构
|
||||
- 部署方式(Docker/本地)
|
||||
- 网络环境
|
||||
|
||||
### 3. 文档要及时更新
|
||||
- SQL 脚本中的数据库名称
|
||||
- 配置文件中的数据库连接
|
||||
- 部署文档中的环境说明
|
||||
|
||||
## 🎯 下一步操作
|
||||
|
||||
### 立即执行(推荐方案 1)
|
||||
```bash
|
||||
# 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)
|
||||
1. 创建独立的 oneos_asset 数据库
|
||||
2. 配置 asset-server-dev.yaml
|
||||
3. 上传配置到 Nacos
|
||||
4. 重新部署服务
|
||||
|
||||
---
|
||||
|
||||
**创建时间**: 2026-03-12 01:40
|
||||
**状态**: 问题已分析,等待选择方案执行
|
||||
Reference in New Issue
Block a user