init-database.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/env bash
  2. # =============================================================================
  3. # 时差项目(Project_TL)数据库一键初始化 —— 幂等 runner(G4-2 / C2)
  4. #
  5. # 作用:全新部署一次到位 —— 建齐 7 个库并导入 base 全量脚本(含对焦扩列/
  6. # house_autofocus_calibration / operation_log,migration 已并入 base)。
  7. #
  8. # 幂等:CREATE DATABASE IF NOT EXISTS + 各 base 脚本内的 DROP TABLE IF EXISTS,
  9. # 可重复执行;重跑会把表结构与"精简测试数据"重置为脚本内容(慎对生产)。
  10. #
  11. # 用法:
  12. # ./init-database.sh # 默认连 127.0.0.1:3306 root/root
  13. # ./init-database.sh <HOST> <PORT> <USER> <PASS>
  14. # # Docker 容器内 mysql 客户端示例(把脚本目录挂进容器后):
  15. # # docker exec -i tl-mysql bash /sql/init-database.sh 127.0.0.1 3306 root root
  16. #
  17. # 注意:
  18. # · 已部署旧库的"增量升级"不要用本脚本(会重建表丢数据),改跑 migrations/ 下脚本。
  19. # · 本地 SQLite 列迁移另见 待验证清单 V-046 / 开发计划 G4-3。
  20. # =============================================================================
  21. set -euo pipefail
  22. HOST="${1:-127.0.0.1}"
  23. PORT="${2:-3306}"
  24. USER="${3:-root}"
  25. PASS="${4:-root}"
  26. DIR="$(cd "$(dirname "$0")" && pwd)"
  27. MYSQL=(mysql -h"${HOST}" -P"${PORT}" -u"${USER}" "-p${PASS}")
  28. # 库名 → base 脚本(顺序固定;库名含中划线/下划线均按文件名=库名对齐,勿改库名)
  29. import_db() {
  30. local db="$1" file="$2"
  31. echo "==> [${db}] CREATE DATABASE IF NOT EXISTS + import ${file}"
  32. "${MYSQL[@]}" -e "CREATE DATABASE IF NOT EXISTS \`${db}\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;"
  33. "${MYSQL[@]}" "${db}" < "${DIR}/${file}"
  34. }
  35. echo "时差项目数据库初始化 → ${USER}@${HOST}:${PORT}"
  36. import_db "aivfo-auth" "aivfo-auth.sql" # 认证/网关:middle/permission/role/user
  37. import_db "aivfo_services" "aivfo_services.sql" # 核心服务:alarm_contacts/tdi_log
  38. import_db "aivfo-tl" "aivfo-tl.sql" # 数据传输(中划线):video/video_pictures/video_splice/video_update
  39. import_db "aivfo_tl_setting" "aivfo_tl_setting.sql" # TL控制配置:含对焦扩列 + house_autofocus_calibration
  40. import_db "aivfo_tl" "aivfo_tl.sql" # 业务管理(下划线):病例/胚胎/字典
  41. import_db "log" "log.sql" # 框架日志:system_log + operation_log(全量操作日志)
  42. import_db "quartz" "quartz.sql" # 定时任务:t_qrtz_*
  43. echo ""
  44. echo "✅ 全部 7 库初始化完成。"
  45. echo " 已含:对焦扩列(tl_setting 5列 / house_well_setting 2列)、house_autofocus_calibration、operation_log。"
  46. echo " 验证:对照 sql/清单.md;或 SHOW TABLES / DESC 抽查上述表与列。"