# Quartz 2.5.2 数据库脚本

`easy-agents-scheduler-quartz` 不会自动创建、删除或修改数据库结构。引用方需要选择与数据库匹配的脚本，并将其内容纳入自己的 Flyway、Liquibase 或初始化流程。

## 脚本与 Delegate

| 数据库 | 类路径资源 | `driverDelegateClass` |
|---|---|---|
| MySQL / MariaDB | `quartz-schema/mysql-2.5.2.sql` | `org.quartz.impl.jdbcjobstore.StdJDBCDelegate` |
| PostgreSQL | `quartz-schema/postgresql-2.5.2.sql` | `org.quartz.impl.jdbcjobstore.PostgreSQLDelegate` |
| H2 2.x（开发与测试） | `quartz-schema/h2-2.5.2.sql` | `org.quartz.impl.jdbcjobstore.StdJDBCDelegate` |

默认表前缀是 `QRTZ_`。若调用方调整表名或 Schema，需要同步设置 `tablePrefix`，例如 `scheduler.QRTZ_`。

## 来源与变更

脚本来自 Quartz 官方仓库 `v2.5.2` 标签：

- [MySQL InnoDB 原始脚本](https://github.com/quartz-scheduler/quartz/blob/v2.5.2/quartz/src/main/resources/org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql)
- [PostgreSQL 原始脚本](https://github.com/quartz-scheduler/quartz/blob/v2.5.2/quartz/src/main/resources/org/quartz/impl/jdbcjobstore/tables_postgres.sql)
- [H2 原始脚本](https://github.com/quartz-scheduler/quartz/blob/v2.5.2/quartz/src/main/resources/org/quartz/impl/jdbcjobstore/tables_h2.sql)

为避免初始化脚本误删调用方已有任务，本模块从 MySQL 和 PostgreSQL 脚本中移除了全部 `DROP TABLE`。H2 版本另将旧式 `IMAGE` 类型替换为 H2 2.x 支持的 `BLOB`，并移除了已经失效的 `MVCC=TRUE` 提示。三套脚本同时移除了显式事务提交和行尾空白，使事务边界由调用方的迁移工具管理，其余建表结构沿用官方脚本。

## SHA-256

| 文件 | 官方原始文件 | 本模块资源 |
|---|---|---|
| MySQL | `90453cda26f4aad8abd35195a38ec36306561f0265f766dd12fbb42e185d5f82` | `1bfadd7762251836d6e15360e85f3c996a5c942a997ff0e9df30b59c50b0e97d` |
| PostgreSQL | `60d22e05e00203702f18f835916c75270aeb6828e7051bb81dd87ebd7bf6a943` | `911d058d415dbb9b29b344997c952e29d2e0b510ce4fe0b69f38adc5d5afffdb` |
| H2 | `21d806abef330e7c7175491b55b730acffa3c2e17a910840b32eee3fe2bf9fed` | `7750ac7b6c29d91072a5f8f98e4489d79469120effa9f613a7d9f89613beba5b` |

脚本随 Quartz 版本固化。后续升级 Quartz 时应新增版本化资源并完成数据库升级验证，不回改已经发布的脚本。

## 引用方接入要求

1. 在目标数据库中执行所选脚本，或复制到引用方自己的迁移文件中。
2. 保持同一集群节点的 `schedulerName`、`tablePrefix` 和数据库一致。
3. 每个节点使用唯一 `instanceId`，常规部署可配置为 `AUTO`。
4. 生产集群启用 `clustered=true`，业务 Handler 按至少一次执行语义实现幂等。
5. 保留启动结构校验；表或关键列缺失时底座会拒绝启动并报告 `SCHEMA_INVALID`。

本模块只包含 Quartz 的 `QRTZ_*` 技术表。任务定义、执行流水、审计和管理界面等业务表由引用方按自身需求设计。
