You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Derby嵌入式数据库多连接访问配置问题求助

问题解决方案整理

一、解决java.lang.SecurityException: sealing violation错误

这个错误是类路径中存在重复或版本冲突的Derby jar包导致的,按以下步骤排查:

  • 检查项目依赖:右键NetBeans项目→属性→库,确保只引入一套Derby相关jar(通常是derby.jar、derbytools.jar,不要同时混合不同版本或嵌入式/网络版的Derby包)
  • 清理项目缓存:执行右键项目→Clean and Build,手动删除项目下的build和dist目录后重新编译
  • 检查系统类路径:查看JRE的lib/ext目录是否有Derby相关jar,如有则删除,避免全局类加载冲突

二、TRANSACTION_READ_COMMITTED隔离级别生效验证

Derby默认隔离级别就是TRANSACTION_READ_COMMITTED,但要确保设置时机正确:

  • 必须在创建Statement/PreparedStatement之前调用con.setTransactionIsolation(TRANSACTION_READ_COMMITTED)
  • 确保连接处于非自动提交模式:调用con.setAutoCommit(false),执行数据库操作后手动con.commit()或con.rollback()
  • 验证方式:执行SELECT CURRENT_TRANSACTION_ISOLATION FROM SYSIBM.SYSDUMMY1查看当前会话的隔离级别

三、行级锁配置生效方法

Derby行级锁需要满足多个条件,按以下步骤调整:

  1. 确认数据库属性已生效:执行SQL VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.storage.rowLocking'),返回'true'才说明配置成功;若未生效,关闭所有数据库连接后重新执行CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.rowLocking', 'true')并提交
  2. 启用多用户连接模式:数据库连接URL需指定用户密码,格式为jdbc:derby:your_db_name;create=true;user=db_user;password=db_pass,确保多个程序使用相同URL连接
  3. 显式触发行级锁:普通SELECT是快照读不会加锁,需要执行SELECT ... FOR UPDATE来获取行锁;更新/删除操作会自动在目标行上加锁
  4. 确保事务处于非自动提交状态:只有在autoCommit=false的事务中,行锁才会保持到事务提交/回滚

内容的提问来源于stack exchange,提问作者JT20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:20:29