# 数据库脚本使用说明 ## 📋 脚本信息 - **脚本名称**: `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 模式 ⚠️ **警告**: 会删除现有数据,仅限开发环境使用