From d51d672c187ccae7366cb529a894947429f45bbc Mon Sep 17 00:00:00 2001 From: rszn <645583145@qq.com> Date: Thu, 27 Jun 2024 17:25:03 +0800 Subject: [PATCH] =?UTF-8?q?qrtz=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/lib/HybirdFrameworkCore.dll | Bin 39936 -> 50688 bytes Service/Job/TestJob.cs | 42 ++++++ Service/Service.csproj | 2 + WebStarter/Program.cs | 5 +- WebStarter/WebStarter.csproj | 1 + WebStarter/appsettings.dev.json | 3 + WebStarter/appsettings.prod.json | 3 + WebStarter/db/qrtz.sql | 214 +++++++++++++++++++++++++++++ WebStarter/log4net.config | 2 +- 9 files changed, 269 insertions(+), 3 deletions(-) create mode 100644 Service/Job/TestJob.cs create mode 100644 WebStarter/db/qrtz.sql diff --git a/Common/lib/HybirdFrameworkCore.dll b/Common/lib/HybirdFrameworkCore.dll index 8c29e7398b13453838a34bf95c8a091efbf4ac0c..ed80839c9ed5227385d654d173193c4be77e4431 100644 GIT binary patch literal 50688 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 literal 39936 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 + + public JobKey GetJobKey() + { + return JobKey.Create("default", JobKey.DefaultGroup); + } + + public ITrigger GetTrigger() + { + return new CronTriggerImpl("d", "d", "0/5 * * * * ?"); + } + + public Task Execute(IJobExecutionContext context) + { + try + { + Log.Info($"{SysConfigRepository.GetHashCode()}"); + } + catch (Exception e) + { + Log.Error(e); + } + + return Task.CompletedTask; + } +} diff --git a/Service/Service.csproj b/Service/Service.csproj index 8964429..99d2dc7 100644 --- a/Service/Service.csproj +++ b/Service/Service.csproj @@ -29,6 +29,8 @@ + + diff --git a/WebStarter/Program.cs b/WebStarter/Program.cs index ddf6368..e218356 100644 --- a/WebStarter/Program.cs +++ b/WebStarter/Program.cs @@ -4,6 +4,7 @@ using HybirdFrameworkCore.Autofac; using HybirdFrameworkCore.AutoTask; using HybirdFrameworkCore.Configuration; using HybirdFrameworkCore.Entity; +using HybirdFrameworkCore.Job; using HybirdFrameworkCore.Redis; using log4net; using Service.Charger.Client; @@ -81,7 +82,6 @@ builder.Services.AddControllers().AddJsonOptions(configure => }); var app = builder.Build(); - // Configure the HTTP request pipeline. app.UseSwagger(); app.UseSwaggerUI(); @@ -103,5 +103,6 @@ AppInfo.Container = app.Services.GetAutofacRoot(); ClientMgr.InitClient(); TaskInit.Init(); - +QuartzSchedulerFactory.Init(); +app.Lifetime.ApplicationStopping.Register(QuartzSchedulerFactory.Shutdown); app.Run(); diff --git a/WebStarter/WebStarter.csproj b/WebStarter/WebStarter.csproj index 852c130..9827bea 100644 --- a/WebStarter/WebStarter.csproj +++ b/WebStarter/WebStarter.csproj @@ -15,6 +15,7 @@ + diff --git a/WebStarter/appsettings.dev.json b/WebStarter/appsettings.dev.json index 1b719e3..ede9554 100644 --- a/WebStarter/appsettings.dev.json +++ b/WebStarter/appsettings.dev.json @@ -32,5 +32,8 @@ "Dest": "D:\\zip", "Days": 7 }, + "Job": { + "Enabled": false + }, "AllowedHosts": "*" } diff --git a/WebStarter/appsettings.prod.json b/WebStarter/appsettings.prod.json index 28d311c..a7d8718 100644 --- a/WebStarter/appsettings.prod.json +++ b/WebStarter/appsettings.prod.json @@ -32,5 +32,8 @@ "Dest": "D:\\zip", "Days": 7 }, + "Job": { + "Enabled": false + }, "AllowedHosts": "*" } diff --git a/WebStarter/db/qrtz.sql b/WebStarter/db/qrtz.sql new file mode 100644 index 0000000..ee17aaf --- /dev/null +++ b/WebStarter/db/qrtz.sql @@ -0,0 +1,214 @@ +/* + Navicat Premium Data Transfer + + Source Server : rszn + Source Server Type : MySQL + Source Server Version : 80034 (8.0.34-0ubuntu0.22.04.1) + Source Host : 180.76.133.253:16306 + Source Schema : huanneng_dev + + Target Server Type : MySQL + Target Server Version : 80034 (8.0.34-0ubuntu0.22.04.1) + File Encoding : 65001 + + Date: 27/06/2024 17:23:00 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for qrtz_blob_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_blob_triggers`; +CREATE TABLE `qrtz_blob_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `BLOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `SCHED_NAME`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_calendars +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_calendars`; +CREATE TABLE `qrtz_calendars` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CALENDAR_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CALENDAR` blob NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `CALENDAR_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_cron_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_cron_triggers`; +CREATE TABLE `qrtz_cron_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `CRON_EXPRESSION` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_fired_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_fired_triggers`; +CREATE TABLE `qrtz_fired_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `ENTRY_ID` varchar(140) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `INSTANCE_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `FIRED_TIME` bigint NOT NULL, + `SCHED_TIME` bigint NOT NULL, + `PRIORITY` int NOT NULL, + `STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `IS_NONCONCURRENT` tinyint(1) NULL DEFAULT NULL, + `REQUESTS_RECOVERY` tinyint(1) NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `ENTRY_ID`) USING BTREE, + INDEX `IDX_QRTZ_FT_TRIG_INST_NAME`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY`(`SCHED_NAME` ASC, `INSTANCE_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_J_G`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_T_G`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_FT_TG`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_job_details +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_job_details`; +CREATE TABLE `qrtz_job_details` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `JOB_CLASS_NAME` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `IS_DURABLE` tinyint(1) NOT NULL, + `IS_NONCONCURRENT` tinyint(1) NOT NULL, + `IS_UPDATE_DATA` tinyint(1) NOT NULL, + `REQUESTS_RECOVERY` tinyint(1) NOT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_J_REQ_RECOVERY`(`SCHED_NAME` ASC, `REQUESTS_RECOVERY` ASC) USING BTREE, + INDEX `IDX_QRTZ_J_GRP`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_locks +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_locks`; +CREATE TABLE `qrtz_locks` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `LOCK_NAME` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `LOCK_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_paused_trigger_grps +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; +CREATE TABLE `qrtz_paused_trigger_grps` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_GROUP`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_scheduler_state +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_scheduler_state`; +CREATE TABLE `qrtz_scheduler_state` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `INSTANCE_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `LAST_CHECKIN_TIME` bigint NOT NULL, + `CHECKIN_INTERVAL` bigint NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `INSTANCE_NAME`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_simple_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simple_triggers`; +CREATE TABLE `qrtz_simple_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `REPEAT_COUNT` bigint NOT NULL, + `REPEAT_INTERVAL` bigint NOT NULL, + `TIMES_TRIGGERED` bigint NOT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_simprop_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_simprop_triggers`; +CREATE TABLE `qrtz_simprop_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `STR_PROP_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `STR_PROP_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `STR_PROP_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `INT_PROP_1` int NULL DEFAULT NULL, + `INT_PROP_2` int NULL DEFAULT NULL, + `LONG_PROP_1` bigint NULL DEFAULT NULL, + `LONG_PROP_2` bigint NULL DEFAULT NULL, + `DEC_PROP_1` decimal(13, 4) NULL DEFAULT NULL, + `DEC_PROP_2` decimal(13, 4) NULL DEFAULT NULL, + `BOOL_PROP_1` tinyint(1) NULL DEFAULT NULL, + `BOOL_PROP_2` tinyint(1) NULL DEFAULT NULL, + `TIME_ZONE_ID` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `qrtz_triggers` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for qrtz_triggers +-- ---------------------------- +DROP TABLE IF EXISTS `qrtz_triggers`; +CREATE TABLE `qrtz_triggers` ( + `SCHED_NAME` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `JOB_GROUP` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `DESCRIPTION` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `NEXT_FIRE_TIME` bigint NULL DEFAULT NULL, + `PREV_FIRE_TIME` bigint NULL DEFAULT NULL, + `PRIORITY` int NULL DEFAULT NULL, + `TRIGGER_STATE` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `TRIGGER_TYPE` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, + `START_TIME` bigint NOT NULL, + `END_TIME` bigint NULL DEFAULT NULL, + `CALENDAR_NAME` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `MISFIRE_INSTR` smallint NULL DEFAULT NULL, + `JOB_DATA` blob NULL, + PRIMARY KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) USING BTREE, + INDEX `IDX_QRTZ_T_J`(`SCHED_NAME` ASC, `JOB_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_JG`(`SCHED_NAME` ASC, `JOB_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_C`(`SCHED_NAME` ASC, `CALENDAR_NAME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_G`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_STATE`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_N_STATE`(`SCHED_NAME` ASC, `TRIGGER_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_N_G_STATE`(`SCHED_NAME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NEXT_FIRE_TIME`(`SCHED_NAME` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST`(`SCHED_NAME` ASC, `TRIGGER_STATE` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_STATE` ASC) USING BTREE, + INDEX `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP`(`SCHED_NAME` ASC, `MISFIRE_INSTR` ASC, `NEXT_FIRE_TIME` ASC, `TRIGGER_GROUP` ASC, `TRIGGER_STATE` ASC) USING BTREE, + CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `qrtz_job_details` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/WebStarter/log4net.config b/WebStarter/log4net.config index eb66fe0..0afbc89 100644 --- a/WebStarter/log4net.config +++ b/WebStarter/log4net.config @@ -172,7 +172,7 @@ - +