SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

本文介绍了一种在程序调试过程中查看未提交事务数据的方法。通过调整SQL Server的事务隔离级别为READ UNCOMMITTED,可以在Microsoft SQL Server Management Studio中查看到处于事务中的数据。
[url]http://msdn.microsoft.com/en-us/library/ms173763.aspx[/url]

开着程序在调试问题,很多时候程序起了transaction。
如果这是想看看数据库表里面的数据,使用Microsoft SQL Server Management Studio的默认级别是不能够读transaction里面的数据的。
如果需要查看数据,可以先运行TSQL代码,将隔离级别降下来,之后再执行查询代码。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
select * from TABLE1
<think>我们之前已经讨论过这个错误,但为了严格遵循用户要求的格式,我们重新组织答案。 问题:Unsupported transaction isolation level '-1' 回答流程:先回答问题(解决方法),再解释原因,最后提出相关问题。 </think>### 问题解答 **错误原因**: `Unsupported transaction isolation level '-1'` 表示数据库连接池接收到无效的事务隔离级别值 `-1`。事务隔离级别必须是数据库支持的整数值(1, 2, 4, 8),而 `-1` 通常由以下原因触发: 1. **未显式配置隔离级别**:连接池将未设置的隔离级别默认为 `-1` 2. **配置错误**:配置文件中使用了非法值(如字符串格式错误) 3. **驱动不兼容**:数据库驱动版本无法解析配置值 ### 解决方法 #### 1. **修正配置文件**(以 Spring Boot 为例) 在 `application.properties` 中配置合法的隔离级别: ```properties # ✅ 正确方式1:使用字符串常量(推荐) spring.datasource.hikari.transaction-isolation=TRANSACTION_READ_COMMITTED # ✅ 正确方式2:使用整数值 spring.datasource.hikari.transaction-isolation=2 ``` #### 2. **代码中显式设置隔离级别** ```java import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; public class DatabaseConfig { public HikariDataSource dataSource() { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost/db"); config.setUsername("user"); config.setPassword("pass"); // 关键修复:设置合法隔离级别 config.setTransactionIsolation("TRANSACTION_REPEATABLE_READ"); // 或直接写 "4" return new HikariDataSource(config); } } ``` #### 3. **排查依赖冲突** 检查 `pom.xml` 确保使用兼容驱动版本: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 避免使用过旧版本 --> </dependency> ``` #### 4. **验证数据库支持** 执行 SQL 确认数据库实际隔离级别: ```sql /* MySQL */ SELECT @@transaction_isolation; /* PostgreSQL */ SHOW transaction_isolation; ``` ### 关键注意事项 - **合法值范围**:隔离级别必须是 `0`(NONE)、`1`(READ_UNCOMMITTED)、`2`(READ_COMMITTED)、`4`(REPEATABLE_READ)、`8`(SERIALIZABLE) - **Spring Boot 默认行为**:若不配置隔离级别,Spring Boot 2.x+ 会使用数据库默认值(通常为 `4`) - **特殊场景**:Oracle 不支持 `READ_UNCOMMITTED`,需避免配置为 `1` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值