questdb 插入的时候调用的db.RestApi().BulkCopyAsync(list),并发查询时报这个错误 返回

SqlSugar 沟通中
2 89
该叫什么 星辰 发布于4天前
悬赏:0 飞吻

@fate sta 你好,插入的时候调用的db.RestApi().BulkCopyAsync(list),并发查询时报这个错误,知道是什么原因吗?

LogLevel:Error

Message:"errorlog":One or more errors occurred. (00000: table busy [reason=unknown])

System.AggregateException: One or more errors occurred. (00000: table busy [reason=unknown])

 ---> Npgsql.PostgresException (0x80004005): 00000: table busy [reason=unknown]

   at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)

   at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)

   at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)

   at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)

   at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)

   at SqlSugar.AdoProvider.GetDataReaderAsync(String sql, SugarParameter[] parameters)

   at SqlSugar.AdoProvider.SqlQueryAsync[T,T2,T3,T4,T5,T6,T7](String sql, Object parameters)

   at SqlSugar.AdoProvider.SqlQueryAsync[T](String sql, SugarParameter[] parameters)

  Exception data:

    Severity: ERROR

    SqlState: 00000

    MessageText: table busy [reason=unknown]

    Position: 1

   --- End of inner exception stack trace ---

   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)

   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)

   at System.Threading.Tasks.Task`1.get_Result()


热忱回答2

  • db.CopyNew()加上

    0 回复
  • 星辰 星辰 VIP0
    23小时前

    /// <summary>

    /// restapi单条插入

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="obj"></param>

    /// <returns></returns>

    public async static Task<int> InsertByOneRestApi<T>(T obj) where T : class, new()

    {

        try

        {

           return await db.CopyNew().RestApi().BulkCopyAsync<T>(obj);

        }

        catch (Exception ex)

        {

            logger.Error(ex);

        }


        return 0;

    }


    /// <summary>

    /// restapi批量插入

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="list"></param>

    /// <returns></returns>

    public async static Task<int> InsertByListRestApi<T>(List<T> list) where T : class, new()

    {

        try

        {

            return await db.CopyNew().RestApi().BulkCopyAsync<T>(list);

        }

        catch (Exception ex)

        {

            logger.Error(ex);

        }


        return 0;

    }


    用这个单个对象插入,可以成功,用批量的list插入就失败,不知道什么问题?



    0 回复