首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过DataSource设置H2的事务隔离级别

通过DataSource设置H2的事务隔离级别
EN

Stack Overflow用户
提问于 2016-02-03 15:48:35
回答 1查看 1.5K关注 0票数 5

由于并发更新的问题,我正在为我的应用程序尝试不同的隔离级别。我通过从中获取数据库连接的DataSource设置隔离级别

代码语言:javascript
复制
BasicDataSource ds = new BasicDataSource();
ds.setDefaultTransactionIsolation(
  Connection.TRANSACTION_REPEATABLE_READ)
/* more config ... */
ds.getConnection()

对于Postgres9.3数据库,对行的并发更新会触发错误,这是意料之中的,根据Standard SQL Transaction Isolation Levels上的postgres文档

ERROR: could not serialize access due to read/write dependencies among transactions将隔离级别设置为Connection.TRANSACTION_READ_COMMITTED时,此错误会按预期消失

尝试使用内存数据库中的H2重现此行为,隔离级别似乎不会改变我的单元测试的结果。即使在使用LOCK_MODE=0和/或Connection.TRANSACTION_READ_UNCOMMITTED设置数据库url的情况下完全禁用隔离,我也会在并发更新org.h2.jdbc.JdbcSQLException: Concurrent update in table "MyTable": another transaction has updated or deleted the same row上出错

我的问题是:如何配置H2连接以使用特定的隔离级别,我对锁定模式或连接所做的任何更改都不能帮助我摆脱JdbcSQLException。

EN

回答 1

Stack Overflow用户

发布于 2016-08-24 22:51:59

H2不应该在多线程环境中运行。您可以将其用于开发等目的,但在线程化、重载环境中,您应该使用全功能DBMS的实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35171248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档