Files
happy-life-star/backend/数据库脚本使用说明.md
T

160 lines
5.0 KiB
Markdown

# 数据库脚本使用说明
## 📋 脚本信息
- **脚本名称**: `mysql_emotion_museum_final.sql`
- **版本**: v3.0 Final (雪花算法主键版本) - 开发版本
- **数据库类型**: MySQL 8.0+
- **字符集**: utf8mb4
- **主键类型**: VARCHAR(36) 使用雪花算法生成
- **关联策略**: 无外键约束,通过代码中的ID字段关联
## ⚠️ 开发版本特性
### 🔄 DROP & CREATE 模式
该脚本针对开发阶段优化,采用先删除再创建的策略:
1. **数据库创建**: 使用 `CREATE DATABASE IF NOT EXISTS`
2. **表删除**: 先删除所有现有表 `DROP TABLE IF EXISTS`
3. **表创建**: 重新创建所有表结构
4. **索引创建**: 创建所有优化索引
5. **事务控制**: 使用事务确保原子性操作
### ⚠️ 重要警告
- **数据丢失**: 每次执行都会删除所有现有数据
- **仅限开发**: 此版本仅适用于开发环境
- **表结构更新**: 确保表结构始终是最新的
- **快速迭代**: 适合频繁调整表结构的开发阶段
## 🚀 使用方法
### 方法1: 命令行执行
```bash
# 进入backend目录
cd backend
# 执行脚本(需要输入MySQL root密码)
mysql -u root -p < mysql_emotion_museum_final.sql
```
### 方法2: MySQL客户端执行
```sql
-- 连接到MySQL
mysql -u root -p
-- 执行脚本
source /path/to/backend/mysql_emotion_museum_final.sql;
```
### 方法3: 图形化工具执行
- 使用 MySQL Workbench、phpMyAdmin 等工具
- 打开脚本文件并执行
## 📊 执行结果
### 成功执行后会显示:
1. **完成消息**: 确认部署成功
2. **表统计**: 显示创建的表数量
3. **表列表**: 显示所有创建的表及其注释
### 预期输出示例:
```
message: Emotion Museum Database v3.0 Final (雪花算法主键版本) - 开发版本 deployment completed successfully!
completion_time: 2025-07-13 10:30:00
description: All tables dropped and recreated with VARCHAR(36) primary keys. Development version - data will be lost on re-execution!
total_tables: 15
table_name | comment | engine
--------------------|----------------|--------
achievement | 成就表 | InnoDB
coze_api_call | Coze API调用表 | InnoDB
comment | 评论表 | InnoDB
community_post | 社区帖子表 | InnoDB
conversation | 对话表 | InnoDB
emotion_analysis | 情绪分析表 | InnoDB
emotion_record | 情绪记录表 | InnoDB
growth_topic | 成长课题表 | InnoDB
guest_user | 访客用户表 | InnoDB
location_pin | 地点标记表 | InnoDB
message | 消息表 | InnoDB
reward | 奖励表 | InnoDB
topic_interaction | 课题互动表 | InnoDB
user | 用户表 | InnoDB
user_stats | 用户统计表 | InnoDB
```
## 🔧 脚本内容
### 创建的数据库表 (15个)
1. **user** - 用户表
2. **conversation** - 对话表
3. **message** - 消息表
4. **coze_api_call** - Coze API调用表
5. **emotion_analysis** - 情绪分析表
6. **emotion_record** - 情绪记录表
7. **growth_topic** - 成长课题表
8. **topic_interaction** - 课题互动表
9. **location_pin** - 地点标记表
10. **community_post** - 社区帖子表
11. **comment** - 评论表
12. **achievement** - 成就表
13. **reward** - 奖励表
14. **guest_user** - 访客用户表
15. **user_stats** - 用户统计表
### 创建的索引 (131个)
- 为所有表的关键字段创建了优化索引
- 包括单列索引和复合索引
- 针对查询性能进行了优化
## ⚠️ 注意事项
### 执行前检查
1. **MySQL版本**: 确保使用MySQL 8.0+
2. **权限**: 确保有创建数据库和表的权限
3. **磁盘空间**: 确保有足够的磁盘空间
4. **备份**: 如果是生产环境,建议先备份
### 重复执行说明
- ⚠️ **数据丢失**: 每次执行都会删除所有现有数据
- 🔄 **表重建**: 所有表都会被删除并重新创建
- 📊 **结构更新**: 确保表结构始终是最新版本
- 📝 **日志**: 建议保存执行日志以便排查问题
### 常见问题
1. **权限不足**: 确保MySQL用户有足够权限
2. **字符集问题**: 确保MySQL支持utf8mb4字符集
3. **存储引擎**: 确保MySQL支持InnoDB存储引擎
4. **数据备份**: 开发版本会删除数据,生产环境请谨慎使用
## 🧪 测试验证
### 验证脚本
项目中包含测试脚本 `test-sql-repeatability.sql` 用于验证可重复执行性:
```bash
mysql -u root -p < test-sql-repeatability.sql
```
### 验证步骤
1. 首次执行主脚本
2. 再次执行主脚本
3. 检查表结构和数据完整性
4. 验证索引是否正确创建
## 📞 技术支持
如果在执行过程中遇到问题:
1. 检查MySQL错误日志
2. 确认MySQL版本和配置
3. 验证用户权限设置
4. 查看脚本执行输出
---
**更新时间**: 2025-07-13
**脚本版本**: v3.0 Final - 开发版本
**特性**: DROP & CREATE 模式 ⚠️
**警告**: 会删除现有数据,仅限开发环境使用