NutzCN Logo
问答 nutzwk的h2database替代mysql作为系统运行的数据库
发布于 83天前 作者 wx_jjn2ia9qvotogktb45bf 183 次浏览 复制 上一个帖子 下一个帖子
标签: ssdb

根据nutz社区中“NutzWk开发第一弹-使用h2db”那个帖子,更改 dao.js 和db.properties及加入了h2服务类,运行系统,报错

SELECT * FROM SYS_QRTZ_LOCKS WHERE SCHED_NAME = 'defaultScheduler' AND LOCK_NAME = ? FOR UPDATE [42102-197]
org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table "SYS_QRTZ_LOCKS" not found; SQL statement:
SELECT * FROM SYS_QRTZ_LOCKS WHERE SCHED_NAME = 'defaultScheduler' AND LOCK_NAME = ? FOR UPDATE [42102-197] [See nested exception: org.h2.jdbc.JdbcSQLException: Table "SYS_QRTZ_LOCKS" not found; SQL statement:
SELECT * FROM SYS_QRTZ_LOCKS WHERE SCHED_NAME = 'defaultScheduler' AND LOCK_NAME = ? FOR UPDATE [42102-197]]
	at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:157)
	at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.doCheckin(JobStoreSupport.java:3274)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:3874)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.initialize(JobStoreSupport.java:3859)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:687)
	at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:567)
	at org.quartz.impl.StdScheduler.start(StdScheduler.java:142)
	at org.quartz.impl.StdScheduler$FM$start$03a2a03dc16e33351501963d0b3a906c.invoke(StdScheduler.java)
	at org.nutz.ioc.impl.ObjectMakerImpl$2.trigger(ObjectMakerImpl.java:180)
	at org.nutz.ioc.weaver.DefaultWeaver.onCreate(DefaultWeaver.java:89)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:141)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:241)
	at org.nutz.ioc.val.ReferValue.get(ReferValue.java:24)
	at org.nutz.ioc.weaver.FieldInjector.inject(FieldInjector.java:32)
	at org.nutz.ioc.weaver.DefaultWeaver.fill(DefaultWeaver.java:67)
	at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:138)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:241)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:271)
	at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:161)
	at cn.wizzer.app.web.commons.core.Setup.initSysTask(Setup.java:298)
	at cn.wizzer.app.web.commons.core.Setup.init(Setup.java:84)
	at org.nutz.mvc.impl.NutLoading.evalSetup(NutLoading.java:278)
	at org.nutz.mvc.impl.NutLoading.load(NutLoading.java:121)
	at org.nutz.mvc.ActionHandler.<init>(ActionHandler.java:19)
	at org.nutz.mvc.NutFilter._init(NutFilter.java:91)
	at org.nutz.mvc.NutFilter.init(NutFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4700)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5340)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
	at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1696)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:484)
	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:433)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
	at sun.rmi.transport.Transport$1.run(Transport.java:200)
	at sun.rmi.transport.Transport$1.run(Transport.java:197)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

11 回复

看上去表没建好?

@wendal 是的 虽然也能启动,但是一直报这个错

什么版本的nutzwk

是nutzwk,不是nutz的版本

@wendal 注释掉

initSysData(config, dao);
            // 初始化系统变量
            initSysSetting(config, dao);
            // 初始化定时任务
            //initSysTask(config, dao);   这个干掉
            // 初始化自定义路由
            initSysRoute(config, dao);
            // 初始化热插拔插件
            initSysPlugin(config, dao);

就ok了
断点显示 这个位置

 QuartzManager quartzManager = config.getIoc().get(QuartzManager.class);    //出错
        quartzManager.clear();//启动时清除任务(不影响集群任务)

那是把定时任务改干掉了

@wendal 那我可不可以这么理解,我不用定时任务的相关内容,去干我想干的事情,会有影响吗?
或者有什么解决方式?最好能解决一下

估计你也不需要集群任务把? 可以改quartz.properties, 改成普通的quartz,就没这个问题了

@wendal 这个nutzwk 的版本为 4.x

本版说明(v4.x)

NutzWk 4.x 运行环境:

  • JDK 8 162+
  • Tomcat 8.5.28 + / Jetty 9.4 +
  • Maven 3.5.x +

NutzWk 4.x 技术选型:

  • 核心框架:Nutz、Nutz MVC、Nutz Dao、Nutzboot
  • 安全框架:Apache Shiro
  • 任务调度:Quartz
  • 数据库连接池:Druid
  • 支持数据库:MySql、Oracle、SqlServer、达梦
  • 缓存框架:Redis、Ehcache
  • 消息队列:Rabbitmq
  • 扩展功能:分布式-Dubbo、WebSocket-Nutz、方法缓存-Wkcache、搜索引擎-Elasticsearch、工作流-Activiti等
  • 前端框架:Bootstrap+JQuery

NutzWk 4.x 特性:

  • 模块化可自由拆分(分布式框架Dubbo/RSF/feign自由选择)
  • 集成Shiro权限框架(支持二级缓存)
  • 集成Ehcache缓存(Shiro的一级缓存)
  • 集成Redis(支持Redis集群/单机模式切换)
  • 集成Email服务
  • 集成Quartz定时任务且支持集群
  • 集成Beetl/Velocity模板引擎
  • 支持语言国际化(直接写汉字不需要Unicode转换)
  • 支持注解式事务(基于强大的@Aop注解)
  • 支持动作链配置(想加过滤器So easy)
  • 支持注解式日志(@SLog注解自动记录日志)
  • 支持自定义路由(显性转发或隐性转发)
  • 支持class或jar插件热插拔(单机部署模式)
  • 支持API Token及应用管理(结合Nodejs一键生成API DOC)
  • 后台管理界面采用Pjax+Bootstrap
  • 系统模块(单位、角色、用户、菜单等完整的权限体系)
  • CMS模块(简易的内容管理功能)
  • 微信模块(支持多公众号、微信支付等功能)

NutzWk 4.x 使用说明:

  • 创建空的数据库
  • 修改数据库连接 wk-app/wk-web/src/main/resources/config/custom/db.properties
  • 项目使用Maven构建,IDEA/Eclipse直接打开,等待包下载完毕
  • 启动wk-web项目时自动建表
  • http://127.0.0.1:你的端口/部署路径/sysadmin
  • 用户名:superadmin 密码:1

若非mysql数据库,请修改quartz.properties 中org.quartz.jobStore.driverDelegateClass的值

NutzWk 4.x 代码生成器安装使用:

  •   IDEA Settings --> Plugins --> Install plugin from disk --> wk-code-ideaplugin.jar
  •   创建实体类,必须有@Table,若字段需生成到模板页面则需加 @Comment 字段备注(注意命名规范和大小写)
  •   编译wk-web项目,使其打包发布至 target/ 目录(目的是让代码生成器可读取到class文件)
  •   在实体类java文件里鼠标右击,或IDEA Code(Alt+Insert/Mouse Right) --> Generate --> wk mvc

这个是在nutz下 readme.md中的信息

添加回复
请先登陆
回到顶部