擅自给公司做网站有什么责任jquery素材网站
2026/1/8 21:38:15 网站建设 项目流程
擅自给公司做网站有什么责任,jquery素材网站,公共体育课程网站建设,制作网页的图背景最近在做国产化适配#xff0c;需要将原本基于 Spring Boot Quartz MySQL 的应用迁移到达梦数据库#xff08;DM8#xff09;。 在完成了数据迁移#xff0c;确认表结构和数据都已经存在于达梦数据库中后#xff0c;启动服务时报错#xff0c;导致定时任务模块无法…背景最近在做国产化适配需要将原本基于 Spring Boot Quartz MySQL 的应用迁移到达梦数据库DM8。在完成了数据迁移确认表结构和数据都已经存在于达梦数据库中后启动服务时报错导致定时任务模块无法初始化。1. 问题现象项目启动时控制台疯狂输出 Quartz 相关的错误日志核心报错信息如下org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: 第1 行附近出现错误: 无效的表或视图名[QRTZ_LOCKS] ... Caused by: dm.jdbc.driver.DMException: 第1 行附近出现错误: 无效的表或视图名[QRTZ_LOCKS] at dm.jdbc.driver.DBError.throwException(DBError.java:667) ...我看了一下DM管理工具QRTZ_LOCKS、QRTZ_TRIGGERS 这些表都有就在 TEST 模式下的表文件夹里一张都不少。2. 原因分析为什么表明明存在程序却说找不到这主要是由于MySQL 和 达梦以及 Oracle在数据库架构设计上的差异导致的MySQL 的逻辑登录后连接到某个 Database通常直接操作表即可不需要太关注 Schema 的概念。达梦/Oracle 的逻辑它是基于用户User和模式Schema的。表是归属于某个 Schema 的通常 Schema 名 用户名。Quartz 默认执行的 SQL 是 SELECT * FROM QRTZ_LOCKS不带前缀。如果当前 JDBC 连接的上下文没有切换到表所在的 Schema或者登录用户没有默认指向该 Schema数据库就会去当前用户的默认空间找结果当然是“找不到”。简单来说Quartz 也就是在“瞎找”它没去我们建表的一亩三分地Schema里找。3. 解决方案解决思路很明确告诉 JDBC 驱动或 Quartz表到底在哪里。以下提供两种方案推荐方案一。方案一修改 JDBC 连接 URL推荐这是最简单改动最小的方法。在 JDBC URL 后面显式指定 schema 参数确保持久层连接后自动切换到正确的模式。修改前spring: datasource: url: jdbc:dm://192.168.2.115:5236/DMSERVER修改后spring: datasource: # 假设你的表在 TEST 模式下注意达梦通常大写 # 加上 schemaTEST 参数 url: jdbc:dm://192.168.2.115:5236/DMSERVER?schemaTESTcompatibleModemysql注意schema的值通常需要大写且要与你达梦管理工具左侧导航栏看到的模式名一致。方案二修改 Quartz 配置文件如果你不想改 JDBC URL也可以在 Quartz 的配置中强制加上表前缀。在 application.yml 或 quartz.properties 中添加 tablePrefix 配置spring: quartz: properties: org: quartz: jobStore: # 关键点手动加上“模式名.”作为前缀 tablePrefix: TEST.QRTZ_ # 建议达梦建议使用标准 JDBC 代理 driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate这样 Quartz 生成的 SQL 就会变成 SELECT ... FROM TEST.QRTZ_LOCKS从而精准定位。4. 补充检查点如果上述修改后依然报错请检查以下两点大小写敏感问题达梦对大小写敏感。如果建表时用了双引号如 CREATE TABLE qrtz_locks表名就是小写的。而 Quartz 默认查大写。解决方法是重建表或者配置 tablePrefix 为小写。驱动代理类确保 driverDelegateClass 没有配置成 MySQL 专用的代理如 MySQLDelegate达梦兼容性较好一般使用 StdJDBCDelegate 或 OracleDelegate 即可。总结国产化迁移过程中数据库的Schema模式概念是很多 MySQL 开发者容易忽略的坑。遇到“无效的表名”错误时第一反应不要怀疑表没建好先检查一下当前用户和当前Schema是否对应希望这篇笔记能帮到同样在做国产化适配的兄弟们

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询