# 数据库连接问题分析报告 ## 🔍 问题分析 ### 核心问题 **数据库名称不匹配!** ### 详细对比 #### 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 **状态**: 问题已分析,等待选择方案执行