setup-database.bat 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. @echo off
  2. chcp 65001 >nul
  3. setlocal EnableDelayedExpansion
  4. echo.
  5. echo ================================================
  6. echo MES制造执行系统 - 数据库配置工具
  7. echo ================================================
  8. echo.
  9. :: 检查MySQL是否安装
  10. echo [1/6] 检查MySQL环境...
  11. mysql --version >nul 2>&1
  12. if errorlevel 1 (
  13. echo ❌ 错误: 未检测到MySQL客户端,请先安装MySQL 8.0+
  14. echo.
  15. echo 请访问: https://dev.mysql.com/downloads/mysql/
  16. pause
  17. exit /b 1
  18. )
  19. echo ✅ MySQL客户端检测成功
  20. :: 设置配置文件路径
  21. set "CONFIG_FILE=Back\mes-sorter\src\main\resources\application.properties"
  22. set "SQL_FILE=Back\mes-sorter\src\main\resources\static\mes_sorter.sql"
  23. :: 检查配置文件是否存在
  24. echo.
  25. echo [2/6] 检查项目文件...
  26. if not exist "%CONFIG_FILE%" (
  27. echo ❌ 错误: 配置文件不存在 - %CONFIG_FILE%
  28. pause
  29. exit /b 1
  30. )
  31. if not exist "%SQL_FILE%" (
  32. echo ❌ 错误: SQL文件不存在 - %SQL_FILE%
  33. pause
  34. exit /b 1
  35. )
  36. echo ✅ 项目文件检查完成
  37. :: 获取数据库连接信息
  38. echo.
  39. echo [3/6] 配置数据库连接信息...
  40. echo.
  41. :: 数据库主机
  42. set /p "DB_HOST=请输入数据库主机地址 [默认: localhost]: "
  43. if "%DB_HOST%"=="" set "DB_HOST=localhost"
  44. :: 数据库端口
  45. set /p "DB_PORT=请输入数据库端口 [默认: 3306]: "
  46. if "%DB_PORT%"=="" set "DB_PORT=3306"
  47. :: 数据库名称
  48. set /p "DB_NAME=请输入数据库名称 [默认: mes_sorter]: "
  49. if "%DB_NAME%"=="" set "DB_NAME=mes_sorter"
  50. :: 数据库用户名
  51. set /p "DB_USER=请输入数据库用户名 [默认: root]: "
  52. if "%DB_USER%"=="" set "DB_USER=root"
  53. :: 数据库密码
  54. echo.
  55. echo 请输入数据库密码(输入时不显示字符):
  56. call :GetPassword DB_PASSWORD
  57. :: 确认信息
  58. echo.
  59. echo [4/6] 确认配置信息...
  60. echo.
  61. echo 数据库主机: %DB_HOST%
  62. echo 数据库端口: %DB_PORT%
  63. echo 数据库名称: %DB_NAME%
  64. echo 数据库用户: %DB_USER%
  65. echo 密码: ********
  66. echo.
  67. set /p "CONFIRM=确认以上信息无误吗?(Y/N) [默认: Y]: "
  68. if /i "%CONFIRM%"=="N" (
  69. echo 配置已取消
  70. pause
  71. exit /b 0
  72. )
  73. :: 测试数据库连接
  74. echo.
  75. echo [5/6] 测试数据库连接...
  76. mysql -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASSWORD% -e "SELECT 1;" >nul 2>&1
  77. if errorlevel 1 (
  78. echo ❌ 错误: 数据库连接失败,请检查连接信息
  79. pause
  80. exit /b 1
  81. )
  82. echo ✅ 数据库连接测试成功
  83. :: 创建数据库和导入数据
  84. echo.
  85. echo [6/6] 初始化数据库...
  86. :: 创建数据库
  87. echo 正在创建数据库 %DB_NAME%...
  88. 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;"
  89. if errorlevel 1 (
  90. echo ❌ 错误: 数据库创建失败
  91. pause
  92. exit /b 1
  93. )
  94. :: 导入SQL文件
  95. echo 正在导入数据表结构和初始数据...
  96. mysql -h%DB_HOST% -P%DB_PORT% -u%DB_USER% -p%DB_PASSWORD% %DB_NAME% < "%SQL_FILE%"
  97. if errorlevel 1 (
  98. echo ❌ 错误: SQL文件导入失败
  99. pause
  100. exit /b 1
  101. )
  102. :: 更新配置文件
  103. echo 正在更新应用配置文件...
  104. :: 创建临时文件
  105. set "TEMP_CONFIG=%CONFIG_FILE%.tmp"
  106. :: 构建数据库URL
  107. set "DB_URL=jdbc:mysql://%DB_HOST%:%DB_PORT%/%DB_NAME%?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8"
  108. :: 更新配置文件
  109. (
  110. for /f "delims=" %%i in (%CONFIG_FILE%) do (
  111. set "line=%%i"
  112. :: 替换数据库URL
  113. if "!line:~0,24!"=="spring.datasource.url=" (
  114. echo spring.datasource.url=%DB_URL%
  115. ) else if "!line:~0,29!"=="spring.datasource.username=" (
  116. echo spring.datasource.username=%DB_USER%
  117. ) else if "!line:~0,29!"=="spring.datasource.password=" (
  118. echo spring.datasource.password=%DB_PASSWORD%
  119. ) else (
  120. echo !line!
  121. )
  122. )
  123. ) > "%TEMP_CONFIG%"
  124. :: 替换原文件
  125. move "%TEMP_CONFIG%" "%CONFIG_FILE%" >nul
  126. :: 创建数据库配置保存文件
  127. echo.
  128. echo 保存数据库配置到 db-config.txt...
  129. (
  130. echo # MES系统数据库配置信息
  131. echo # 生成时间: %date% %time%
  132. echo.
  133. echo DB_HOST=%DB_HOST%
  134. echo DB_PORT=%DB_PORT%
  135. echo DB_NAME=%DB_NAME%
  136. echo DB_USER=%DB_USER%
  137. echo DB_PASSWORD=%DB_PASSWORD%
  138. echo.
  139. echo # 连接字符串
  140. echo DB_URL=%DB_URL%
  141. ) > db-config.txt
  142. echo.
  143. echo ================================================
  144. echo 数据库配置完成!
  145. echo ================================================
  146. echo.
  147. echo ✅ 数据库 '%DB_NAME%' 创建成功
  148. echo ✅ 数据表结构导入完成
  149. echo ✅ 初始数据导入完成
  150. echo ✅ 应用配置文件已更新
  151. echo ✅ 配置信息已保存到 db-config.txt
  152. echo.
  153. echo 🚀 现在可以运行 start.bat 启动系统
  154. echo.
  155. pause
  156. exit /b 0
  157. :: 隐藏密码输入函数
  158. :GetPassword
  159. set "password="
  160. :GetPasswordLoop
  161. set "char="
  162. for /f "delims=" %%i in ('xcopy /w "%~f0" "%~f0" 2^>nul') do if not defined char set "char=%%i"
  163. set "char=%char:~-1%"
  164. if "%char%"=="" goto :GetPasswordEnd
  165. if "%char%"=="%BS%" (
  166. if defined password (
  167. set "password=%password:~0,-1%"
  168. <nul set /p "=!BS! !BS!"
  169. )
  170. goto :GetPasswordLoop
  171. )
  172. set "password=%password%%char%"
  173. <nul set /p "=*"
  174. goto :GetPasswordLoop
  175. :GetPasswordEnd
  176. set "%~1=%password%"
  177. echo.
  178. exit /b 0