分表 INSERT 操作偶尔报错 返回
mgzhenhong 发布于2026/3/17
向Postgresql数据库分表持续插入数据, 每次批量插入200条数据:
var snowflakeIdList = this.dbClient
.Insertable(this.trackDataRecordsForInsert)
.SplitTable()
.ExecuteReturnSnowflakeIdList();
开始工作正常, 但是不定时(一到两个小时后)突然会开始报错:
NpgsqlTransaction
Exception: System.ObjectDisposedException
Message: NpgsqlTransaction
StackTrace:
at Npgsql.ThrowHelper.ThrowObjectDisposedException(String objectName, Exception innerException)
at Npgsql.NpgsqlTransaction.CheckReady()
at Npgsql.NpgsqlTransaction.Rollback(Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlTransaction.Rollback()
at SqlSugar.AdoProvider.RollbackTran()
at SqlSugar.SplitInsertable`1.ExecuteReturnSnowflakeIdList()
然后开始持续报错:
Transaction is already completed
Exception: System.InvalidOperationException
Message: Transaction is already completed
StackTrace:
at SqlSugar.AdoProvider.ExecuteCommand(String sql, SugarParameter[] parameters)
at SqlSugar.InsertableProvider`1.ExecuteCommand()
at SqlSugar.InsertableProvider`1.ExecuteReturnSnowflakeIdList()
at SqlSugar.SplitInsertable`1._ExecuteReturnSnowflakeIdList()
at SqlSugar.SplitInsertable`1.ExecuteReturnSnowflakeIdList()
一旦开始报错就停不下来
引用 SqlSugarCoreNoDrive 5.1.4.213 和 Npgsql 10.0.1
外部没有事务
热忱回答(2)
-
fate sta VIP0
2026/3/17如果没有事务的话,this.dbClient改成this.dbClient.CopyNew()试一下
0 回复 -
mgzhenhong VIP0
2026/3/17我试试看, 但是我本地无法复现, 选一个出现过这个错误的场景上线验证, 可能需要一两天才能有结果.
0 回复