@echo off chcp 65001 >nul setlocal EnableDelayedExpansion echo. echo ================================================ echo MES制造执行系统 - 数据库配置工具 echo ================================================ echo. :: 检查MySQL是否安装 echo [1/6] 检查MySQL环境... mysql --version >nul 2>&1 if errorlevel 1 ( echo ❌ 错误: 未检测到MySQL客户端,请先安装MySQL 8.0+ echo. echo 请访问: https://dev.mysql.com/downloads/mysql/ pause exit /b 1 ) echo ✅ MySQL客户端检测成功 :: 设置配置文件路径 set "CONFIG_FILE=Back\mes-sorter\src\main\resources\application.properties" set "SQL_FILE=Back\mes-sorter\src\main\resources\static\mes_sorter.sql" :: 检查配置文件是否存在 echo. echo [2/6] 检查项目文件... if not exist "%CONFIG_FILE%" ( echo ❌ 错误: 配置文件不存在 - %CONFIG_FILE% pause exit /b 1 ) if not exist "%SQL_FILE%" ( echo ❌ 错误: SQL文件不存在 - %SQL_FILE% pause exit /b 1 ) echo ✅ 项目文件检查完成 :: 获取数据库连接信息 echo. echo [3/6] 配置数据库连接信息... echo. :: 数据库主机 set /p "DB_HOST=请输入数据库主机地址 [默认: localhost]: " if "%DB_HOST%"=="" set "DB_HOST=localhost" :: 数据库端口 set /p "DB_PORT=请输入数据库端口 [默认: 3306]: " if "%DB_PORT%"=="" set "DB_PORT=3306" :: 数据库名称 set /p "DB_NAME=请输入数据库名称 [默认: mes_sorter]: " if "%DB_NAME%"=="" set "DB_NAME=mes_sorter" :: 数据库用户名 set /p "DB_USER=请输入数据库用户名 [默认: root]: " if "%DB_USER%"=="" set "DB_USER=root" :: 数据库密码 echo. echo 请输入数据库密码(输入时不显示字符): call :GetPassword DB_PASSWORD :: 确认信息 echo. echo [4/6] 确认配置信息... echo. echo 数据库主机: %DB_HOST% echo 数据库端口: %DB_PORT% echo 数据库名称: %DB_NAME% echo 数据库用户: %DB_USER% echo 密码: ******** echo. set /p "CONFIRM=确认以上信息无误吗?(Y/N) [默认: Y]: " if /i "%CONFIRM%"=="N" ( echo 配置已取消 pause exit /b 0 ) :: 测试数据库连接 echo. echo [5/6] 测试数据库连接... mysql -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASSWORD% -e "SELECT 1;" >nul 2>&1 if errorlevel 1 ( echo ❌ 错误: 数据库连接失败,请检查连接信息 pause exit /b 1 ) echo ✅ 数据库连接测试成功 :: 创建数据库和导入数据 echo. echo [6/6] 初始化数据库... :: 创建数据库 echo 正在创建数据库 %DB_NAME%... mysql -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASSWORD% -e "CREATE DATABASE IF NOT EXISTS %DB_NAME% CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" if errorlevel 1 ( echo ❌ 错误: 数据库创建失败 pause exit /b 1 ) :: 导入SQL文件 echo 正在导入数据表结构和初始数据... mysql -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% < "%SQL_FILE%" if errorlevel 1 ( echo ❌ 错误: SQL文件导入失败 pause exit /b 1 ) :: 更新配置文件 echo 正在更新应用配置文件... :: 创建临时文件 set "TEMP_CONFIG=%CONFIG_FILE%.tmp" :: 构建数据库URL set "DB_URL=jdbc:mysql://%DB_HOST%:%DB_PORT%/%DB_NAME%?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8" :: 更新配置文件 ( for /f "delims=" %%i in (%CONFIG_FILE%) do ( set "line=%%i" :: 替换数据库URL if "!line:~0,24!"=="spring.datasource.url=" ( echo spring.datasource.url=%DB_URL% ) else if "!line:~0,29!"=="spring.datasource.username=" ( echo spring.datasource.username=%DB_USER% ) else if "!line:~0,29!"=="spring.datasource.password=" ( echo spring.datasource.password=%DB_PASSWORD% ) else ( echo !line! ) ) ) > "%TEMP_CONFIG%" :: 替换原文件 move "%TEMP_CONFIG%" "%CONFIG_FILE%" >nul :: 创建数据库配置保存文件 echo. echo 保存数据库配置到 db-config.txt... ( echo # MES系统数据库配置信息 echo # 生成时间: %date% %time% echo. echo DB_HOST=%DB_HOST% echo DB_PORT=%DB_PORT% echo DB_NAME=%DB_NAME% echo DB_USER=%DB_USER% echo DB_PASSWORD=%DB_PASSWORD% echo. echo # 连接字符串 echo DB_URL=%DB_URL% ) > db-config.txt echo. echo ================================================ echo 数据库配置完成! echo ================================================ echo. echo ✅ 数据库 '%DB_NAME%' 创建成功 echo ✅ 数据表结构导入完成 echo ✅ 初始数据导入完成 echo ✅ 应用配置文件已更新 echo ✅ 配置信息已保存到 db-config.txt echo. echo 🚀 现在可以运行 start.bat 启动系统 echo. pause exit /b 0 :: 隐藏密码输入函数 :GetPassword set "password=" :GetPasswordLoop set "char=" for /f "delims=" %%i in ('xcopy /w "%~f0" "%~f0" 2^>nul') do if not defined char set "char=%%i" set "char=%char:~-1%" if "%char%"=="" goto :GetPasswordEnd if "%char%"=="%BS%" ( if defined password ( set "password=%password:~0,-1%"