160 lines
5.0 KiB
Markdown
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 模式 ⚠️
|
|
**警告**: 会删除现有数据,仅限开发环境使用
|