sqlite数据库迁移mysql

​ 结构 ef生成

需要注意mysql的版本

dingban.QRTZ_JOB_DETAILS' doesn't exist

dingban.QRTZ_JOB_DETAILS' doesn't exist EF Core 生成的 SQL 语句使用了大写表名(如 SysUser),而 MySQL 数据库中实际表名是小写(sysuser),且 MySQL 5.6 在区分大小写的环境下(如 Linux)会认为两者是不同的表。

是因为ef框架导致的识别大写,数据库中的表名确认是小写的

  public async Task ScheduleReminderAsync(TodoItem todo)
  {
      var scheduler = await _schedulerFactory.GetScheduler();
      var jobKey = new JobKey($"reminder_{todo.Id}");

      // 如果已存在,先删除旧的任务
      if (await scheduler.CheckExists(jobKey))
      {
          await scheduler.DeleteJob(jobKey);
      }

      var job = JobBuilder.Create<ReminderJob>()
          .WithIdentity(jobKey)
          .UsingJobData("TodoId", todo.Id.ToString()) // 使用字符串值而非整数
          .UsingJobData("UserId", todo.UserId.ToString()) // ✅ 新增:加入 UserId
           .UsingJobData("TodoName", todo.Title.ToString())
          .UsingJobData("TodoRendertime", todo.RemindTime.ToString())
          .Build();

      var trigger = TriggerBuilder.Create()
          .WithIdentity($"trigger_{todo.Id}")
          .StartAt(new DateTimeOffset(todo.RemindTime.ToUniversalTime()))
          .Build();

      await scheduler.ScheduleJob(job, trigger);

      _logger.LogInformation($"✅ Scheduled reminder for TodoId={todo.Id}, UserId={todo.UserId}, at {todo.RemindTime:o}");
  }是因为ef框架导致的识别大写,数据库中的表名确认是小写的 dingban.QRTZ_JOB_DETAILS' doesn't exist EF Core 生成的 SQL 语句使用了大写表名(如 SysUser),而 MySQL5.6的 数据库中实际表名已经是小写(sysuser),且 MySQL 5.6 在区分大小写的环境下(如 Linux)会认为两者是不同的表。怎么解决ef还是无法正常执行
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    { 
        base.OnModelCreating(modelBuilder);
        // 将所有表名改为小写
        foreach (var entity in modelBuilder.Model.GetEntityTypes())
        {
            var tableName = entity.GetTableName();
            if (!string.IsNullOrEmpty(tableName))
            {
                entity.SetTableName(tableName.ToLower());
            }
        } 这里并没有包含获取到 dingban.QRTZ_JOB_DETAILS' 
        数据库的表名已经是小写了,但是ef使用的大写表名
        services.AddQuartz(q =>
  {
      q.UseMicrosoftDependencyInjectionJobFactory();
      q.UsePersistentStore(opt =>
      {
          opt.UseProperties = true;
          opt.RetryInterval = TimeSpan.FromSeconds(15);
          // ✅ SQLite 作为存储
          opt.UseMySql(sqlite =>
          {
              var connectionString = Configuration.GetConnectionString("DefaultConnection")
         ?? "server=localhost;port=3306;database=dingban;user=dingban;password=dingban;convertzerodatetime=True;Charset=utf8mb4;";
              sqlite.ConnectionString = connectionString;
          });

          opt.UseJsonSerializer();
          // 临时禁用架构验证,解决"Database schema validation failed"错误
          opt.PerformSchemaValidation = false;
      });
  });
AddQuartz 默认使用大写的表名去访问的数据库,怎么改成小写
 Quartz 添加删除任务的时候 在代码中默认使用大写的表名去访问的数据库, 数据库中是小写表名在mysql5.6中被区分,代码中怎么改成小写
或者表中怎么全部大写
-- 创建视图映射
CREATE VIEW QRTZ_JOB_DETAILS AS SELECT * FROM qrtz_job_details;
CREATE VIEW QRTZ_TRIGGERS AS SELECT * FROM qrtz_triggers;
CREATE VIEW QRTZ_SIMPLE_TRIGGERS AS SELECT * FROM qrtz_simple_triggers;
CREATE VIEW QRTZ_CRON_TRIGGERS AS SELECT * FROM qrtz_cron_triggers;
CREATE VIEW QRTZ_BLOB_TRIGGERS AS SELECT * FROM qrtz_blob_triggers;
CREATE VIEW QRTZ_FIRED_TRIGGERS AS SELECT * FROM qrtz_fired_triggers;
CREATE VIEW QRTZ_PAUSED_TRIGGER_GRPS AS SELECT * FROM qrtz_paused_trigger_grps;
CREATE VIEW QRTZ_CALENDARS AS SELECT * FROM qrtz_calendars;
CREATE VIEW QRTZ_LOCKS AS SELECT * FROM qrtz_locks;
CREATE VIEW QRTZ_SCHEDULER_STATE AS SELECT * FROM qrtz_scheduler_state;
CREATE VIEW QRTZ_SIMPROP_TRIGGERS AS SELECT * FROM qrtz_simprop_triggers;