# 执行脚本目录 本目录包含宁夏智慧养殖监管平台的运维脚本和工具脚本。 ## 📋 脚本索引 ### 🗄️ 数据库管理 - [`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月*