# 数据库脚本清单 > 时差项目(Project_TL)数据库初始化脚本汇总 > 整理日期:2026-06-15 > 更新日期:2026-06-20(G4-2:两 migration 已并入 base;补幂等 runner `init-database.sh`) > 所有脚本均从源代码各模块中抽取,统一存放于本目录。 > **文件名已与目标数据库名保持一致**,导入时直接按文件名指定同名库即可。 ## 〇、一键全新部署(推荐) ```bash # 建齐 7 库 + 导入全部 base(含对焦扩列 / house_autofocus_calibration / operation_log),幂等可重跑 cd sql && ./init-database.sh # 默认 127.0.0.1:3306 root/root ./init-database.sh 192.168.0.108 3306 root root # 指定服务器 ``` > `init-database.sh` 对每个库做 `CREATE DATABASE IF NOT EXISTS` + 导入对应 base 脚本(脚本内 `DROP TABLE IF EXISTS`), > **全新部署一次跑完不缺表/列**。⚠️ 已部署旧库的"增量升级"勿用本脚本(会重建表丢数据),改跑 `migrations/`(见下文四)。 ## 一、业务库初始化脚本 | 脚本文件 | 目标数据库 | 对应模块 | 表数量 | 说明 | |---------|-----------|---------|-------|------| | `aivfo-auth.sql` | `aivfo-auth` | aivfo-gateway(认证/网关) | 4 | middle、permission、role、user 等认证授权表 | | `aivfo_services.sql` | `aivfo_services` | aivfo-service(核心服务) | 2 | alarm_contacts、tdi_log | | `aivfo-tl.sql` | `aivfo-tl` | aivfo-data-transmission(数据传输) | 4 | video、video_pictures、video_splice、video_update | | `aivfo_tl_setting.sql` | `aivfo_tl_setting` | aivof-tl-control(TL 控制配置) | 18 | 告警/区域等配置表,含多语言;流水表已精简。**含对焦扩列**(tl_setting +5 / house_well_setting +2)与新表 `house_autofocus_calibration`(migrations/2026-06-17 已并入) | | `aivfo_tl.sql` | `aivfo_tl` | aivfo-business-manage(业务管理) | 25 | 病例/胚胎/字典等业务表,含多语言;流水表已精简 | > ⚠️ 注意:`aivfo_tl.sql`(下划线,**业务库**)与 `aivfo-tl.sql`(中划线,**数据传输库**)是两个不同的库,名字相近勿混淆。 ## 二、框架组件表结构脚本 | 脚本文件 | 目标数据库 | 来源框架组件 | 说明 | |---------|-----------|------------|------| | `log.sql` | `log` | aivfo-log-spring-boot | 系统日志表 `system_log` + 全量操作日志表 `operation_log`(migrations/2026-06-18 已并入) | | `quartz.sql` | `quartz` | aivfo-quartz-spring-boot | Quartz 定时任务表(MySQL 8.x 版本,表前缀 t_qrtz_) | ## 三、说明 - 每个脚本均为对应库的**全量初始化脚本**(含 `DROP TABLE IF EXISTS` + 建表),部署时导入同名库即可。 - 脚本文件名 = 目标数据库名;`aivfo-auth` / `aivfo-tl`(中划线)与 `aivfo_tl` / `aivfo_tl_setting` / `aivfo_services`(下划线)的命名差异源自各服务 `application-local.properties` 中的 jdbc 配置,**库名不可改动**(应用引用),故以文件名向库名对齐。 - `log` 与 `quartz` 两库需手动创建(其余库已存在);脚本不含 `CREATE DATABASE`/`USE`,导入时由 mysql 客户端指定目标库。 - 当前脚本为**精简测试数据后的导出**:业务流水/日志表(embryo_culture_record、video、log、message、alarm_data、mqtt_message、tdi_log 等)已清空,配置/字典/多语言表(mark、dictionary、photo_search_button、cn_region_info、language_configuration 等)完整保留。精简规则见 `项目文档/需求文档/精简测试数据.sql`(适配本地实际库名的版本为 `精简测试数据_adapted.sql`)。 - 导入命令示例(Docker 容器 `tl-mysql`): ```bash docker exec -i tl-mysql mysql -uroot -proot 'aivfo-auth' < aivfo-auth.sql docker exec -i tl-mysql mysql -uroot -proot 'aivfo_tl' < aivfo_tl.sql # …其余库同理,按文件名=库名导入 ``` ## 四、迁移脚本 `migrations/`(仅供已部署旧库增量升级) | 脚本 | 目标库 | 内容 | 全新部署 | |------|--------|------|----------| | `migrations/2026-06-17-autofocus-data-layer.sql` | `aivfo_tl_setting` | tl_setting +5 对焦列、house_well_setting +2 覆盖列、新表 `house_autofocus_calibration` | **不需要**(已并入 `aivfo_tl_setting.sql`) | | `migrations/2026-06-18-operation-log.sql` | `log` | 新表 `operation_log` | **不需要**(已并入 `log.sql`) | - **全新部署**:只跑 base(`init-database.sh` 或逐库导入),已含上述表/列,**勿再跑 migration**。 - **已部署旧库升级**:无这些表/列时才跑对应 migration。⚠️ MySQL 8 `ADD COLUMN` 不支持 `IF NOT EXISTS`, 旧库重跑 autofocus 迁移前先 `DESC` 判断列是否已存在,否则报 Duplicate column。 - **本地 SQLite**(operate 端 tl_setting/house_well_setting 缓存)列迁移不在此,见 待验证清单 `V-046` / 开发计划 `G4-3`。