• 由于定时模块的错误导致系统无法启动


    2022-04-01 17:01:05.704 [main] [INFO ] [org.quartz.impl.jdbcjobstore.JobStoreTX] - Freed 0 triggers from 'acquired' / 'blocked' state.
    2022-04-01 17:01:06.816 [main] [INFO ] [org.quartz.core.QuartzScheduler] - Scheduler schedulerFactoryBean_$_NON_CLUSTERED shutting down.
    2022-04-01 17:01:06.817 [main] [INFO ] [org.quartz.core.QuartzScheduler] - Scheduler schedulerFactoryBean_$_NON_CLUSTERED paused.
    2022-04-01 17:01:06.821 [main] [INFO ] [org.quartz.core.QuartzScheduler] - Scheduler schedulerFactoryBean_$_NON_CLUSTERED shutdown complete.

    protected void recoverJobs(Connection conn) throws JobPersistenceException {
            try {
                int rows = this.getDelegate().updateTriggerStatesFromOtherStates(conn, "WAITING", "ACQUIRED", "BLOCKED");
                rows += this.getDelegate().updateTriggerStatesFromOtherStates(conn, "PAUSED", "PAUSED_BLOCKED", "PAUSED_BLOCKED");
                this.getLog().info("Freed " + rows + " triggers from 'acquired' / 'blocked' state.");
                this.recoverMisfiredJobs(conn, true);
                List<OperableTrigger> recoveringJobTriggers = this.getDelegate().selectTriggersForRecoveringJobs(conn);
                this.getLog().info("Recovering " + recoveringJobTriggers.size() + " jobs that were in-progress at the time of the last shut-down.");
                Iterator i$ = recoveringJobTriggers.iterator();
    
                while(i$.hasNext()) {
                    OperableTrigger recoveringJobTrigger = (OperableTrigger)i$.next();
                    if (this.jobExists(conn, recoveringJobTrigger.getJobKey())) {
                        recoveringJobTrigger.computeFirstFireTime((Calendar)null);
                        this.storeTrigger(conn, recoveringJobTrigger, (JobDetail)null, false, "WAITING", false, true);
                    }
                }
    
                this.getLog().info("Recovery complete.");
                List<TriggerKey> cts = this.getDelegate().selectTriggersInState(conn, "COMPLETE");
                Iterator i$ = cts.iterator();
    
                while(i$.hasNext()) {
                    TriggerKey ct = (TriggerKey)i$.next();
                    this.removeTrigger(conn, ct);
                }
    
                this.getLog().info("Removed " + cts.size() + " 'complete' triggers.");
                int n = this.getDelegate().deleteFiredTriggers(conn);
                this.getLog().info("Removed " + n + " stale fired job entries.");
            } catch (JobPersistenceException var7) {
                throw var7;
            } catch (Exception var8) {
                throw new JobPersistenceException("Couldn't recover jobs: " + var8.getMessage(), var8);
            }
        }

    从打印的日志上看,大概是红色的代码块出了问题。

    跟踪代码进入,里头是去据库取数据。

    那么我猜测大概是由于无法获取数据库的数据导致错误。

    排除数据库版本的语法问题,

    其次排查是否数据库名称区分大小写。

    经过分析数据库版本可以排除问题,那么剩下就是表名的大小写问题了。

    查询数据库配置,是区分大小写的。

    所以修改数据配置。

    原来Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:
    1、用root登录,修改 /etc/my.cnf;
    2、在[mysqld]节点下,加入一行:
     lower_case_table_names=1
    重启mysql服务systemctl restart mysqld
    再次启动系统~~~
    正常。。。。。。。。。。。

  • 相关阅读:
    Flipboard web移动端-打造每秒60帧的流畅体验
    android开源代码演示项目CodeBox
    Material风格的文件管理器
    android:ToolBar详解
    GossipView:圆圈布局的自定义view
    9个完整android开源app项目
    android-波浪效果ripple-background
    Android Studio 简单介绍和使用问题小结
    ActionItemBadge:在actionbar上显示badge数字提示
    在ContentResolver中使用Group By
  • 原文地址:https://www.cnblogs.com/annkiny/p/16088457.html
Copyright © 2020-2023  润新知