-- ----------------------------------------------------------------------------- -- TMS 全量库结构初始化脚本 -- 适用范围:空库初始化 / Flyway 首次建库 -- 数据库:TiDB / MySQL 8+ -- -- 说明: -- 1. 本文件是当前仓库唯一保留的数据库初始化 SQL。 -- 2. 结构已按当前最终状态汇总,不再依赖历史 V1~V12 逐步迁移。 -- 3. 执行前请先选中目标数据库,本文件不再包含 CREATE DATABASE / USE。 -- ----------------------------------------------------------------------------- CREATE DATABASE IF NOT EXISTS TMS DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE TMS; -- ----------------------------------------------------------------------------- -- 初始化任务 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_init_task ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, task_type VARCHAR(32) NOT NULL DEFAULT 'INIT' COMMENT '任务类型:INIT/RESET', version VARCHAR(32) NOT NULL, status VARCHAR(32) NOT NULL, product_type VARCHAR(16) NULL, org_code VARCHAR(32) NULL, mq_type VARCHAR(32) NULL, deploy_mode VARCHAR(16) NULL, init_plan_json LONGTEXT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_init_task_task_id (task_id) ); CREATE TABLE IF NOT EXISTS tms_init_task_step ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, step_no INT NOT NULL, step_code VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, message VARCHAR(512) NULL, command_line VARCHAR(2048) NULL, log_path VARCHAR(512) NULL, exit_code INT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_init_task_step_task_no (task_id, step_no), KEY idx_tms_init_task_step_task_id (task_id) ); -- ----------------------------------------------------------------------------- -- 资源备份与恢复 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_resource_backup_task ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, backup_id VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, product_type VARCHAR(16) NOT NULL, mq_type VARCHAR(32) NULL, org_code VARCHAR(32) NULL, source_device_id VARCHAR(128) NULL, package_name VARCHAR(255) NULL, package_path VARCHAR(1024) NULL, package_size BIGINT NULL, package_hash VARCHAR(128) NULL, storage_enc_key_fingerprint VARCHAR(128) NOT NULL, authenticity_key_fingerprint VARCHAR(128) NOT NULL, manifest_summary_json JSON NULL, error_code VARCHAR(64) NULL, error_message VARCHAR(1024) NULL, remark VARCHAR(1024) NULL, create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, start_time DATETIME(3) NULL, finish_time DATETIME(3) NULL, UNIQUE KEY uk_tms_resource_backup_task_task_id (task_id), UNIQUE KEY uk_tms_resource_backup_task_backup_id (backup_id), KEY idx_tms_resource_backup_task_status (status), KEY idx_tms_resource_backup_task_create_time (create_time) ); CREATE TABLE IF NOT EXISTS tms_resource_restore_task ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, precheck_id VARCHAR(64) NOT NULL, backup_id VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, source_device_id VARCHAR(128) NULL, source_product_type VARCHAR(16) NOT NULL, target_product_type VARCHAR(16) NOT NULL, package_file_id VARCHAR(64) NOT NULL, package_path VARCHAR(1024) NULL, staging_dir VARCHAR(1024) NULL, runner_state_path VARCHAR(1024) NULL, storage_enc_key_fingerprint VARCHAR(128) NOT NULL, authenticity_key_fingerprint VARCHAR(128) NOT NULL, restore_plan_json JSON NULL, consistency_report_json JSON NULL, error_code VARCHAR(64) NULL, error_message VARCHAR(1024) NULL, remark VARCHAR(1024) NULL, create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, start_time DATETIME(3) NULL, finish_time DATETIME(3) NULL, UNIQUE KEY uk_tms_resource_restore_task_task_id (task_id), UNIQUE KEY uk_tms_resource_restore_task_precheck_id (precheck_id), KEY idx_tms_resource_restore_task_status (status), KEY idx_tms_resource_restore_task_create_time (create_time) ); CREATE TABLE IF NOT EXISTS tms_resource_task_step ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, task_type VARCHAR(32) NOT NULL COMMENT 'RESOURCE_BACKUP / RESOURCE_RESTORE', step_no INT NOT NULL, step_code VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, message VARCHAR(512) NULL, log_path VARCHAR(1024) NULL, exit_code INT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, start_time DATETIME(3) NULL, finish_time DATETIME(3) NULL, UNIQUE KEY uk_tms_resource_task_step_task_no (task_id, step_no), KEY idx_tms_resource_task_step_task_id (task_id), KEY idx_tms_resource_task_step_task_type (task_type) ); -- ----------------------------------------------------------------------------- -- 认证与设备基础表 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_device_node ( id BIGINT PRIMARY KEY, node_id VARCHAR(64) NOT NULL, host VARCHAR(128) NOT NULL, status VARCHAR(32) NOT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_device_node_node_id (node_id) ); CREATE TABLE IF NOT EXISTS tms_file_record ( id BIGINT PRIMARY KEY, file_id VARCHAR(64) NOT NULL, original_filename VARCHAR(255) NOT NULL, storage_path VARCHAR(1024) NOT NULL, status VARCHAR(32) NOT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_file_record_file_id (file_id) ); -- ----------------------------------------------------------------------------- -- 设备软件版本 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_device_software_version ( id BIGINT PRIMARY KEY, component_code VARCHAR(64) NOT NULL, component_name VARCHAR(128) NOT NULL, current_version VARCHAR(128) NOT NULL, source_type VARCHAR(32) NOT NULL, detected_at DATETIME NULL, remarks VARCHAR(255) NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_tms_device_software_version_component_code (component_code) ); INSERT INTO tms_device_software_version (id, component_code, component_name, current_version, source_type, detected_at, remarks) VALUES (1001, 'RABBITMQ', '消息队列', 'V3.8.21', 'MANUAL', NOW(), '出厂预置'), (1002, 'TLQ', '消息队列', 'V8.1.11', 'MANUAL', NOW(), '出厂预置'), (1003, 'TIDB', '数据库', 'V8.1.0', 'MANUAL', NOW(), '出厂预置'), (1004, 'NGINX', 'Nginx', 'V1.20', 'MANUAL', NOW(), '出厂预置'), (1005, 'RECEIVER', '标准收发器', 'V1.3.2', 'MANUAL', NOW(), '出厂预置'), (1006, 'TMS', 'CISD终端管理服务', 'V1.0.0', 'MANUAL', NOW(), '出厂预置') ON DUPLICATE KEY UPDATE component_name = VALUES(component_name), current_version = VALUES(current_version), source_type = VALUES(source_type), detected_at = VALUES(detected_at), remarks = VALUES(remarks), update_time = CURRENT_TIMESTAMP; -- ----------------------------------------------------------------------------- -- 升级任务 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS t_upgrade_task ( id BIGINT PRIMARY KEY, task_id VARCHAR(64) NOT NULL, upgrade_mode VARCHAR(16) NOT NULL, target_component VARCHAR(32) NOT NULL, package_file_id VARCHAR(64) NOT NULL, package_name VARCHAR(255) NOT NULL, package_hash VARCHAR(128) NOT NULL, current_version VARCHAR(64) NOT NULL, target_version VARCHAR(64) NOT NULL, status VARCHAR(32) NOT NULL, verify_passed TINYINT(1) NOT NULL DEFAULT 0, verify_message VARCHAR(1024) NULL, manifest_json TEXT NULL, detail_log_path VARCHAR(1024) NULL, error_message VARCHAR(1024) NULL, operator VARCHAR(64) NULL, started_at DATETIME(3) NULL, finished_at DATETIME(3) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_t_upgrade_task_task_id (task_id), KEY idx_t_upgrade_task_status (status), KEY idx_t_upgrade_task_component (target_component), KEY idx_t_upgrade_task_create_time (create_time) ); -- ----------------------------------------------------------------------------- -- 新认证体系 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_role_account ( id BIGINT PRIMARY KEY, role_code VARCHAR(64) NOT NULL, display_name VARCHAR(128) NOT NULL, required_ukey_count INT NOT NULL, status VARCHAR(32) NOT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_role_account_role_code (role_code) ); CREATE TABLE IF NOT EXISTS tms_role_ukey_binding ( id BIGINT PRIMARY KEY, role_code VARCHAR(64) NOT NULL, uid INT NOT NULL, ukey_serial VARCHAR(128) NOT NULL, ukey_pubkey TEXT NOT NULL, issuer_sign TEXT NULL, status VARCHAR(32) NOT NULL, bound_at DATETIME(3) NOT NULL, unbound_at DATETIME(3) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_role_ukey_binding_role_uid_serial (role_code, uid, ukey_serial), KEY idx_tms_role_ukey_binding_role_uid_status (role_code, uid, status), KEY idx_tms_role_ukey_binding_role_status (role_code, status) ); CREATE TABLE IF NOT EXISTS tms_auth_full_account ( id BIGINT PRIMARY KEY, role_code VARCHAR(64) NOT NULL, uid INT NOT NULL, account_name VARCHAR(64) NOT NULL, display_name VARCHAR(128) NOT NULL, password_hash VARCHAR(256) NOT NULL, password_salt VARCHAR(128) NOT NULL, status VARCHAR(32) NOT NULL, need_change_password TINYINT(1) NOT NULL DEFAULT 1, password_changed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), failed_count INT NOT NULL DEFAULT 0, locked_until DATETIME(3) NULL, last_login_at DATETIME(3) NULL, last_active_at DATETIME(3) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_auth_full_account_role_uid (role_code, uid), UNIQUE KEY uk_tms_auth_full_account_name (account_name), KEY idx_tms_auth_full_account_role_code (role_code) ); CREATE TABLE IF NOT EXISTS tms_auth_session ( id BIGINT PRIMARY KEY, session_token VARCHAR(128) NOT NULL, role_code VARCHAR(64) NOT NULL, authenticated_principals_json JSON NULL, auth_method VARCHAR(32) NOT NULL, auth_level VARCHAR(32) NOT NULL, issued_at DATETIME(3) NOT NULL, last_active_at DATETIME(3) NOT NULL, expires_at DATETIME(3) NOT NULL, logout_at DATETIME(3) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_auth_session_token (session_token), KEY idx_tms_auth_session_role_code (role_code) ); CREATE TABLE IF NOT EXISTS tms_auth_challenge ( id BIGINT PRIMARY KEY, challenge_id VARCHAR(128) NOT NULL, role_code VARCHAR(64) NOT NULL, purpose VARCHAR(32) NOT NULL, nonce VARCHAR(256) NOT NULL, expires_at DATETIME(3) NOT NULL, used TINYINT(1) NOT NULL DEFAULT 0, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_auth_challenge_challenge_id (challenge_id) ); CREATE TABLE IF NOT EXISTS tms_auth_audit_log ( id BIGINT PRIMARY KEY, event_type VARCHAR(64) NOT NULL, role_code VARCHAR(64) NULL, operator_role_code VARCHAR(64) NULL, result VARCHAR(32) NOT NULL, detail_json JSON NULL, remote_ip VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, KEY idx_tms_auth_audit_log_event_type (event_type), KEY idx_tms_auth_audit_log_role_code (role_code) ); -- ----------------------------------------------------------------------------- -- 防重放与安全事件 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_replay_nonce ( id BIGINT PRIMARY KEY, scope VARCHAR(32) NOT NULL COMMENT '防重放作用域:OPENAPI / INTERNAL_API', principal_id VARCHAR(128) NOT NULL COMMENT '主体标识:appId / sessionToken', nonce VARCHAR(128) NOT NULL, request_timestamp BIGINT NOT NULL, request_method VARCHAR(16) NULL, request_path VARCHAR(256) NULL, body_hash VARCHAR(128) NULL, remote_ip VARCHAR(64) NULL, user_agent VARCHAR(512) NULL, expires_at DATETIME(3) NOT NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_tms_replay_nonce_scope_principal_nonce (scope, principal_id, nonce), KEY idx_tms_replay_nonce_expires_at (expires_at), KEY idx_tms_replay_nonce_principal_time (principal_id, create_time) ); CREATE TABLE IF NOT EXISTS tms_security_event ( id BIGINT PRIMARY KEY, event_type VARCHAR(64) NOT NULL, scope VARCHAR(32) NOT NULL, principal_id VARCHAR(128) NULL, request_method VARCHAR(16) NULL, request_path VARCHAR(256) NULL, nonce VARCHAR(128) NULL, remote_ip VARCHAR(64) NULL, detail_json JSON NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, KEY idx_tms_security_event_event_type (event_type), KEY idx_tms_security_event_scope_principal (scope, principal_id) ); INSERT IGNORE INTO tms_role_account ( id, role_code, display_name, required_ukey_count, status, create_time, update_time ) VALUES ( 11001, 'SUPER_ADMIN', '超级管理员', 2, 'ACTIVE', CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 11002, 'KEY_ADMIN', '密钥管理员', 1, 'ACTIVE', CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 11003, 'AUDIT_ADMIN', '审计管理员', 1, 'UNENABLED', CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 11004, 'OPS_ADMIN', '运维管理员', 1, 'UNENABLED', CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ); INSERT IGNORE INTO tms_auth_full_account ( id, role_code, uid, account_name, display_name, password_hash, password_salt, status, need_change_password, password_changed_at, failed_count, locked_until, last_login_at, last_active_at, create_time, update_time ) VALUES ( 12101, 'SUPER_ADMIN', 1, 'super-admin-full-01', '超级管理员UKey席位一', 'Viuew8WE+qziUZwGGU0x25cUpzsTF+QvQFU0uhb+yVA=', 'init-super-admin-salt-20260325', 'ACTIVE', 1, CURRENT_TIMESTAMP(3), 0, NULL, NULL, NULL, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 12102, 'SUPER_ADMIN', 2, 'super-admin-full-02', '超级管理员UKey席位二', 'Viuew8WE+qziUZwGGU0x25cUpzsTF+QvQFU0uhb+yVA=', 'init-super-admin-salt-20260325', 'ACTIVE', 1, CURRENT_TIMESTAMP(3), 0, NULL, NULL, NULL, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 12103, 'KEY_ADMIN', 1, 'key-admin-full-01', '密钥管理员UKey席位', '/xqmDy3A/q9X5p7XWznIPSBabQ6bxTLAPgtHQ6Be33c=', 'init-key-admin-salt-20260325', 'ACTIVE', 1, CURRENT_TIMESTAMP(3), 0, NULL, NULL, NULL, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 12104, 'AUDIT_ADMIN', 1, 'audit-admin-full-01', '审计管理员UKey席位', 'j/J1LKyUOzVEJfbbHe2dwKBKNdabRk502olk/LWIwhg=', 'init-audit-admin-salt-20260325', 'ACTIVE', 1, CURRENT_TIMESTAMP(3), 0, NULL, NULL, NULL, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ), ( 12105, 'OPS_ADMIN', 1, 'ops-admin-full-01', '运维管理员UKey席位', '2e9F4aCgsDb+AuD1LrBEqEg8yjy3ODo27UHtx06vj/A=', 'init-ops-admin-salt-20260325', 'ACTIVE', 1, CURRENT_TIMESTAMP(3), 0, NULL, NULL, NULL, CURRENT_TIMESTAMP(3), CURRENT_TIMESTAMP(3) ); -- ----------------------------------------------------------------------------- -- IP白名单表 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS tms_access_whitelist ( id BIGINT PRIMARY KEY AUTO_INCREMENT, ip VARCHAR(32) NOT NULL, mask VARCHAR(10) NOT NULL, create_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), update_time DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) ); -- ----------------------------------------------------------------------------- -- Cert module tables -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS t_key_entity ( id BIGINT PRIMARY KEY, org_code VARCHAR(64) NOT NULL COMMENT 'organization code', org_name VARCHAR(255) NOT NULL COMMENT 'organization name', algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 / RSA', key_len INT NOT NULL COMMENT 'SM2 fixed 256 in V1', key_idx INT NOT NULL COMMENT 'card key index, allowed range [2..8]', backup_data VARCHAR(500) NOT NULL COMMENT 'SDFE_BackupUserKey output', public_key VARCHAR(500) NOT NULL COMMENT 'public key, Base64/PEM', p10_data VARCHAR(2000) NULL COMMENT 'PKCS#10 PEM content', subject_dn VARCHAR(500) NULL COMMENT 'DN used when generating P10', cert_mode VARCHAR(16) NULL COMMENT 'SINGLE / DOUBLE', status VARCHAR(32) NOT NULL COMMENT 'CREATED / P10_GENERATED / CERT_IMPORTED', allow_ips VARCHAR(500) NULL COMMENT 'allowed source IP list', sign_data VARCHAR(512) NULL COMMENT 'reserved, not used in V1', create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_t_key_entity_key_idx (key_idx), KEY idx_t_key_entity_org_code (org_code), KEY idx_t_key_entity_algo (algo_type), KEY idx_t_key_entity_status (status), KEY idx_t_key_entity_create_time (create_time) ); CREATE TABLE IF NOT EXISTS t_certificate ( id BIGINT PRIMARY KEY, entity_id BIGINT NULL COMMENT 'required when cert_type=ENTITY', cert_type VARCHAR(16) NOT NULL COMMENT 'ENTITY / USER', subject_dn VARCHAR(500) NOT NULL, issuer_dn VARCHAR(1024) NOT NULL, serial_number VARCHAR(128) NOT NULL, algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1', fingerprint VARCHAR(128) NOT NULL COMMENT 'SHA-256 fingerprint', cert_data VARCHAR(2000) NOT NULL COMMENT 'certificate PEM content', valid_from DATETIME(3) NOT NULL, valid_to DATETIME(3) NOT NULL, import_time DATETIME(3) NOT NULL, sign_data VARCHAR(512) NULL COMMENT 'reserved, not used in V1', create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_t_certificate_fingerprint (fingerprint), KEY idx_t_certificate_entity_id (entity_id), KEY idx_t_certificate_cert_type (cert_type), KEY idx_t_certificate_issuer_dn (issuer_dn(512)), KEY idx_t_certificate_valid_to (valid_to), KEY idx_t_certificate_import_time (import_time) ); CREATE TABLE IF NOT EXISTS t_trusted_cert ( id BIGINT PRIMARY KEY, alias VARCHAR(128) NOT NULL, subject_dn VARCHAR(1024) NOT NULL, issuer_dn VARCHAR(1024) NOT NULL, serial_number VARCHAR(128) NOT NULL, algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1', fingerprint VARCHAR(128) NOT NULL COMMENT 'SHA-256 fingerprint', cert_data VARCHAR(2000) NOT NULL COMMENT 'certificate PEM content', ca_level TINYINT NOT NULL COMMENT '0:Root, 1:Intermediate', valid_from DATETIME(3) NOT NULL, valid_to DATETIME(3) NOT NULL, import_time DATETIME(3) NOT NULL, sign_data VARCHAR(512) NULL COMMENT 'reserved, not used in V1', create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_t_trusted_cert_fingerprint (fingerprint), KEY idx_t_trusted_cert_subject_dn (subject_dn(512)), KEY idx_t_trusted_cert_issuer_dn (issuer_dn(512)), KEY idx_t_trusted_cert_valid_to (valid_to) ); CREATE TABLE IF NOT EXISTS t_certificate_crl ( id BIGINT PRIMARY KEY, issuer_dn VARCHAR(1024) NOT NULL, crl_number VARCHAR(128) NULL, algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1', fingerprint VARCHAR(128) NOT NULL COMMENT 'SHA-256 fingerprint', crl_data MEDIUMTEXT NOT NULL COMMENT 'CRL PEM content', this_update DATETIME(3) NOT NULL, next_update DATETIME(3) NULL, revoked_count INT NOT NULL, import_time DATETIME(3) NOT NULL, create_by VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, UNIQUE KEY uk_t_certificate_crl_fingerprint (fingerprint), KEY idx_t_certificate_crl_issuer_dn (issuer_dn(512)), KEY idx_t_certificate_crl_this_update (this_update), KEY idx_t_certificate_crl_next_update (next_update) ); CREATE TABLE IF NOT EXISTS t_certificate_crl_revoked ( id BIGINT PRIMARY KEY, crl_id BIGINT NOT NULL, issuer_dn VARCHAR(1024) NOT NULL, serial_number VARCHAR(128) NOT NULL, subject_dn VARCHAR(1024) NULL, algo_type VARCHAR(16) NOT NULL COMMENT 'SM2 in V1', crl_number VARCHAR(128) NULL, revocation_time DATETIME(3) NOT NULL, revocation_reason VARCHAR(64) NULL, create_time DATETIME(3) NOT NULL, update_time DATETIME(3) NOT NULL, KEY idx_t_certificate_crl_revoked_crl_id (crl_id), KEY idx_t_certificate_crl_revoked_issuer_serial (issuer_dn(512), serial_number), KEY idx_t_certificate_crl_revoked_subject_dn (subject_dn(512)), KEY idx_t_certificate_crl_revoked_revocation_time (revocation_time) );