分表 INSERT 操作偶尔报错 返回

SqlSugar 沟通中
2 471

向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 fate sta VIP0
    2026/3/17

    如果没有事务的话,this.dbClient改成this.dbClient.CopyNew()试一下

    0 回复
  • 我试试看, 但是我本地无法复现, 选一个出现过这个错误的场景上线验证, 可能需要一两天才能有结果.

    0 回复