167 lines
3.8 KiB
Markdown
167 lines
3.8 KiB
Markdown
|
|
# 执行脚本目录
|
|||
|
|
|
|||
|
|
本目录包含宁夏智慧养殖监管平台的运维脚本和工具脚本。
|
|||
|
|
|
|||
|
|
## 📋 脚本索引
|
|||
|
|
|
|||
|
|
### 🗄️ 数据库管理
|
|||
|
|
- [`init-db.js`](init-db.js) - 数据库初始化脚本
|
|||
|
|
- [`migration-manager.js`](migration-manager.js) - 数据库迁移管理脚本
|
|||
|
|
- [`seed-manager.js`](seed-manager.js) - 种子数据管理脚本
|
|||
|
|
- [`database/create_tables.sql`](database/create_tables.sql) - 完整数据库表结构创建脚本
|
|||
|
|
- [`database/schema.sql`](database/schema.sql) - 基础数据库结构脚本
|
|||
|
|
|
|||
|
|
### 🔗 连接测试
|
|||
|
|
- [`test-connection.js`](test-connection.js) - 数据库连接测试脚本
|
|||
|
|
- [`test-map-api.js`](test-map-api.js) - 百度地图API连接测试脚本
|
|||
|
|
|
|||
|
|
## 🚀 脚本使用方法
|
|||
|
|
|
|||
|
|
### 数据库初始化
|
|||
|
|
```bash
|
|||
|
|
# 初始化数据库结构和基础数据
|
|||
|
|
node scripts/init-db.js
|
|||
|
|
|
|||
|
|
# 或者在backend目录下使用npm脚本
|
|||
|
|
cd backend
|
|||
|
|
npm run init-db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 数据库迁移管理
|
|||
|
|
```bash
|
|||
|
|
# 运行所有未执行的迁移
|
|||
|
|
node scripts/migration-manager.js up
|
|||
|
|
|
|||
|
|
# 回滚最后一次迁移
|
|||
|
|
node scripts/migration-manager.js down
|
|||
|
|
|
|||
|
|
# 查看迁移状态
|
|||
|
|
node scripts/migration-manager.js status
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 种子数据管理
|
|||
|
|
```bash
|
|||
|
|
# 填充所有种子数据
|
|||
|
|
node scripts/seed-manager.js all
|
|||
|
|
|
|||
|
|
# 填充特定种子数据
|
|||
|
|
node scripts/seed-manager.js users
|
|||
|
|
node scripts/seed-manager.js farms
|
|||
|
|
|
|||
|
|
# 清空种子数据
|
|||
|
|
node scripts/seed-manager.js clear
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 连接测试
|
|||
|
|
```bash
|
|||
|
|
# 测试数据库连接
|
|||
|
|
node scripts/test-connection.js
|
|||
|
|
|
|||
|
|
# 测试百度地图API连接
|
|||
|
|
node scripts/test-map-api.js
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ⚙️ 环境要求
|
|||
|
|
|
|||
|
|
运行这些脚本需要:
|
|||
|
|
|
|||
|
|
1. **Node.js 18.0+** - JavaScript运行环境
|
|||
|
|
2. **MySQL 8.0+** - 数据库服务
|
|||
|
|
3. **环境变量配置** - 正确配置的.env文件
|
|||
|
|
|
|||
|
|
## 🔧 配置说明
|
|||
|
|
|
|||
|
|
### 环境变量
|
|||
|
|
脚本依赖以下环境变量(通常在backend/.env文件中配置):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 数据库配置
|
|||
|
|
DB_HOST=localhost
|
|||
|
|
DB_PORT=3306
|
|||
|
|
DB_NAME=nxxmdata
|
|||
|
|
DB_USER=root
|
|||
|
|
DB_PASSWORD=your_password
|
|||
|
|
|
|||
|
|
# 百度地图API配置
|
|||
|
|
BAIDU_MAP_API_KEY=your_api_key
|
|||
|
|
|
|||
|
|
# 其他配置
|
|||
|
|
NODE_ENV=development
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 权限要求
|
|||
|
|
- 数据库用户需要有创建、删除、修改表的权限
|
|||
|
|
- 百度地图API密钥需要有效且未超过调用限制
|
|||
|
|
|
|||
|
|
## 📊 日志和输出
|
|||
|
|
|
|||
|
|
脚本运行时会输出详细的日志信息:
|
|||
|
|
- ✅ 成功操作以绿色显示
|
|||
|
|
- ❌ 错误信息以红色显示
|
|||
|
|
- ⚠️ 警告信息以黄色显示
|
|||
|
|
- ℹ️ 信息性消息以蓝色显示
|
|||
|
|
|
|||
|
|
## 🛡️ 安全注意事项
|
|||
|
|
|
|||
|
|
1. **生产环境**: 在生产环境运行脚本前务必备份数据
|
|||
|
|
2. **权限控制**: 确保脚本执行用户具有必要的最小权限
|
|||
|
|
3. **敏感数据**: 不要在脚本中硬编码敏感信息
|
|||
|
|
4. **审计日志**: 生产环境执行脚本应记录详细的审计日志
|
|||
|
|
|
|||
|
|
## 🔄 脚本开发规范
|
|||
|
|
|
|||
|
|
如需新增脚本,请遵循以下规范:
|
|||
|
|
|
|||
|
|
### 文件命名
|
|||
|
|
- 使用 kebab-case 命名: `example-script.js`
|
|||
|
|
- 功能明确的描述性名称
|
|||
|
|
- 按功能分类存放
|
|||
|
|
|
|||
|
|
### 代码结构
|
|||
|
|
```javascript
|
|||
|
|
#!/usr/bin/env node
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 脚本功能说明
|
|||
|
|
* 用法: node scripts/example-script.js [参数]
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
const path = require('path');
|
|||
|
|
const { logger } = require('../backend/utils/logger');
|
|||
|
|
|
|||
|
|
// 主要功能函数
|
|||
|
|
async function main() {
|
|||
|
|
try {
|
|||
|
|
// 脚本逻辑
|
|||
|
|
logger.info('脚本执行成功');
|
|||
|
|
} catch (error) {
|
|||
|
|
logger.error('脚本执行失败:', error);
|
|||
|
|
process.exit(1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 如果直接运行脚本则执行main函数
|
|||
|
|
if (require.main === module) {
|
|||
|
|
main();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
module.exports = { main };
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 错误处理
|
|||
|
|
- 使用统一的日志记录
|
|||
|
|
- 合适的错误码退出
|
|||
|
|
- 详细的错误信息输出
|
|||
|
|
|
|||
|
|
## 📞 支持和帮助
|
|||
|
|
|
|||
|
|
如果在使用脚本过程中遇到问题:
|
|||
|
|
|
|||
|
|
1. 检查环境变量配置是否正确
|
|||
|
|
2. 确认数据库连接是否正常
|
|||
|
|
3. 查看脚本输出的错误信息
|
|||
|
|
4. 参考项目文档或联系技术支持
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*最后更新: 2025年1月*
|