@echo off chcp 65001 REM ETest 数据库迁移执行脚本 REM 执行前请确保已备份数据库 echo ======================================== echo ETest 数据库迁移执行工具 echo ======================================== echo. REM 检查参数 if "%~1"=="" ( echo 用法: migrate.bat [阶段] [数据库配置] echo. echo 阶段: echo phase1 - 执行第一阶段迁移(基础表) echo phase2 - 执行第二阶段迁移(工单扩展) echo phase3 - 执行第三阶段迁移(报告表) echo all - 执行全部三个阶段 echo. echo 示例: echo migrate.bat phase1 echo migrate.bat all echo. pause exit /b 1 ) set PHASE=%~1 set MYSQL_HOST=localhost set MYSQL_PORT=3306 set MYSQL_USER=root set MYSQL_PASS=your_password set MYSQL_DB=etest REM 从 .env 文件读取配置(如果存在) if exist .env ( for /f "tokens=1,2 delims==" %%a in (.env) do ( if "%%a"=="DB_HOST" set MYSQL_HOST=%%b if "%%a"=="DB_PORT" set MYSQL_PORT=%%b if "%%a"=="DB_USER" set MYSQL_USER=%%b if "%%a"=="DB_PASS" set MYSQL_PASS=%%b if "%%a"=="DB_NAME" set MYSQL_DB=%%b ) ) echo 数据库配置: echo 主机: %MYSQL_HOST% echo 端口: %MYSQL_PORT% echo 数据库: %MYSQL_DB% echo 用户: %MYSQL_USER% echo. REM 确认执行 echo 即将执行 %PHASE% 迁移 echo. set /p CONFIRM="确认执行? (yes/no): " if /i not "%CONFIRM%"=="yes" ( echo 已取消 exit /b 0 ) echo. echo ======================================== REM 执行迁移 if "%PHASE%"=="phase1" ( echo 执行第一阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase1_base_tables.sql if %errorlevel% neq 0 ( echo [错误] 第一阶段迁移失败 exit /b 1 ) echo [成功] 第一阶段迁移完成 ) if "%PHASE%"=="phase2" ( echo 执行第二阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase2_workorder_extend.sql if %errorlevel% neq 0 ( echo [错误] 第二阶段迁移失败 exit /b 1 ) echo [成功] 第二阶段迁移完成 ) if "%PHASE%"=="phase3" ( echo 执行第三阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase3_report_tables.sql if %errorlevel% neq 0 ( echo [错误] 第三阶段迁移失败 exit /b 1 ) echo [成功] 第三阶段迁移完成 ) if "%PHASE%"=="all" ( echo 执行全部三个阶段... echo. echo [1/3] 执行第一阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase1_base_tables.sql if %errorlevel% neq 0 ( echo [错误] 第一阶段迁移失败 exit /b 1 ) echo [成功] 第一阶段迁移完成 echo. echo [2/3] 执行第二阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase2_workorder_extend.sql if %errorlevel% neq 0 ( echo [错误] 第二阶段迁移失败 exit /b 1 ) echo [成功] 第二阶段迁移完成 echo. echo [3/3] 执行第三阶段迁移... mysql -h %MYSQL_HOST% -P %MYSQL_PORT% -u %MYSQL_USER% -p%MYSQL_PASS% %MYSQL_DB% < sql\migration\20260321_phase3_report_tables.sql if %errorlevel% neq 0 ( echo [错误] 第三阶段迁移失败 exit /b 1 ) echo [成功] 第三阶段迁移完成 ) echo. echo ======================================== echo 迁移执行完成 echo ======================================== echo. echo 请检查: echo 1. 表结构是否正确 echo 2. 索引是否创建 echo 3. 现有数据是否正常 echo. pause