second commit
This commit is contained in:
205
DATABASE_SETUP.md
Normal file
205
DATABASE_SETUP.md
Normal file
@@ -0,0 +1,205 @@
|
||||
# PromptForge 数据库设置指南
|
||||
|
||||
## 🗄️ 数据库配置
|
||||
|
||||
PromptForge 使用 **腾讯云数据库** 作为后端数据存储,支持完整的用户系统、模板管理和社区功能。
|
||||
|
||||
### 📋 当前配置
|
||||
|
||||
- **数据库类型**: MySQL
|
||||
- **云服务商**: 腾讯云
|
||||
- **连接地址**: `gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936`
|
||||
- **数据库名**: `pronode_db`
|
||||
- **用户名**: `root`
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. 设置环境变量
|
||||
|
||||
创建 `.env.local` 文件:
|
||||
|
||||
```env
|
||||
# 数据库配置
|
||||
DATABASE_URL="mysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/pronode_db?charset=utf8mb4"
|
||||
|
||||
# Next.js 配置
|
||||
NEXTAUTH_SECRET="your-secret-key-here"
|
||||
NEXTAUTH_URL="http://localhost:3000"
|
||||
|
||||
# 应用配置
|
||||
NODE_ENV="development"
|
||||
```
|
||||
|
||||
### 3. 生成 Prisma 客户端
|
||||
|
||||
```bash
|
||||
npm run db:generate
|
||||
```
|
||||
|
||||
### 4. 推送数据库模式
|
||||
|
||||
```bash
|
||||
npm run db:push
|
||||
```
|
||||
|
||||
### 5. 初始化示例数据
|
||||
|
||||
```bash
|
||||
npm run db:seed
|
||||
```
|
||||
|
||||
### 6. 启动开发服务器
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 📊 数据库结构
|
||||
|
||||
### 主要数据表
|
||||
|
||||
1. **users** - 用户信息
|
||||
2. **templates** - 提示词模板
|
||||
3. **favorites** - 用户收藏
|
||||
4. **comments** - 模板评论
|
||||
5. **tests** - 测试记录
|
||||
6. **system_configs** - 系统配置
|
||||
|
||||
### 表关系
|
||||
|
||||
```
|
||||
User (1) ←→ (N) Template
|
||||
User (1) ←→ (N) Favorite
|
||||
User (1) ←→ (N) Comment
|
||||
Template (1) ←→ (N) Test
|
||||
```
|
||||
|
||||
## 🛠️ 数据库管理命令
|
||||
|
||||
```bash
|
||||
# 生成 Prisma 客户端
|
||||
npm run db:generate
|
||||
|
||||
# 推送模式到数据库
|
||||
npm run db:push
|
||||
|
||||
# 创建迁移文件
|
||||
npm run db:migrate
|
||||
|
||||
# 打开 Prisma Studio(数据库管理界面)
|
||||
npm run db:studio
|
||||
|
||||
# 初始化示例数据
|
||||
npm run db:seed
|
||||
```
|
||||
|
||||
## 🔧 开发工具
|
||||
|
||||
### Prisma Studio
|
||||
|
||||
Prisma Studio 是一个可视化的数据库管理工具:
|
||||
|
||||
```bash
|
||||
npm run db:studio
|
||||
```
|
||||
|
||||
访问 `http://localhost:5555` 查看数据库内容。
|
||||
|
||||
### 数据库连接测试
|
||||
|
||||
```typescript
|
||||
import { testDatabaseConnection } from '@/lib/database'
|
||||
|
||||
// 测试连接
|
||||
const isConnected = await testDatabaseConnection()
|
||||
console.log('数据库连接状态:', isConnected)
|
||||
```
|
||||
|
||||
## 🔒 安全配置
|
||||
|
||||
### 环境变量
|
||||
|
||||
- 生产环境请使用环境变量存储敏感信息
|
||||
- 不要在代码中硬编码数据库密码
|
||||
- 定期更换数据库密码
|
||||
|
||||
### 访问控制
|
||||
|
||||
- 限制数据库访问IP
|
||||
- 使用最小权限原则
|
||||
- 定期备份数据
|
||||
|
||||
## 📈 性能优化
|
||||
|
||||
### 索引优化
|
||||
|
||||
```sql
|
||||
-- 为常用查询添加索引
|
||||
CREATE INDEX idx_templates_category ON templates(category);
|
||||
CREATE INDEX idx_templates_author ON templates(authorId);
|
||||
CREATE INDEX idx_templates_public ON templates(isPublic);
|
||||
```
|
||||
|
||||
### 连接池配置
|
||||
|
||||
```typescript
|
||||
const prisma = new PrismaClient({
|
||||
datasources: {
|
||||
db: {
|
||||
url: databaseUrl,
|
||||
},
|
||||
},
|
||||
// 连接池配置
|
||||
log: ['query', 'error', 'warn'],
|
||||
})
|
||||
```
|
||||
|
||||
## 🚨 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **连接超时**
|
||||
- 检查网络连接
|
||||
- 验证数据库地址和端口
|
||||
- 确认防火墙设置
|
||||
|
||||
2. **认证失败**
|
||||
- 验证用户名和密码
|
||||
- 检查用户权限
|
||||
- 确认数据库存在
|
||||
|
||||
3. **模式同步失败**
|
||||
- 检查数据库权限
|
||||
- 验证表结构
|
||||
- 查看错误日志
|
||||
|
||||
### 日志查看
|
||||
|
||||
```bash
|
||||
# 查看 Prisma 日志
|
||||
npm run db:studio
|
||||
|
||||
# 查看应用日志
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [Prisma 官方文档](https://www.prisma.io/docs)
|
||||
- [腾讯云数据库文档](https://cloud.tencent.com/document/product/236)
|
||||
- [Next.js 数据库集成](https://nextjs.org/docs/app/building-your-application/data-fetching)
|
||||
|
||||
## 🤝 支持
|
||||
|
||||
如果遇到数据库相关问题,请:
|
||||
|
||||
1. 查看错误日志
|
||||
2. 检查网络连接
|
||||
3. 验证配置信息
|
||||
4. 联系技术支持
|
||||
Reference in New Issue
Block a user