定时任务中的Sql报错 返回

SqlSugar 沟通中
3 389
该叫什么 发布于2025/7/24
悬赏:0 飞吻

在ASP.Net Core Web Api中通过后台服务(BackgroundService)运行定时任务,经常出现Sql错误(每天有两三次);请帮忙分析一下,

            var timerCaller = new System.Timers.Timer

            {

                AutoReset = true,

                Enabled = true,

                Interval = 60 * 1000 //1分钟

            };

            timerCaller.Elapsed += OnCallerEventAsync;


定时任务共有三个Sql,都产生过报错;其它所有服务和后台服务的Sql都正常;

SqlSugar是最新版本;数据库是Sqlite

Microsoft.Data.Sqlite和Microsoft.Data.Sqlite.Core是9.0.0;目标框架是.Net 8.0


1、db.GetConnectionScope(Base.Db).Queryable<Models.RMqttDeviceBind>().ToList();


MyHandler caught : System.Exception: 中文提示 : TownId绑定到MqttDevice失败,可以试着换一个类型,或者使用ORM自定义类型实现

English Message : MqttDevice TownId bind error

   at SqlSugarEntity(IDataRecord)

   at SqlSugar.IDataReaderEntityBuilder`1.Build(IDataRecord dataRecord)

   at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader)

   at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)

   at SqlSugar.QueryableProvider`1._ToList[TResult]()

   at SqlSugar.QueryableProvider`1.ToList()

   at NComServer.Mqtt.MqttAutoTask.OnCallerEventAsync(Object source, ElapsedEventArgs e)

   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)

   at System.Threading.QueueUserWorkItemCallback.Execute()

   at System.Threading.ThreadPoolWorkQueue.Dispatch()

   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() | 



2、db.GetConnectionScope(Base.Db).Queryable<Models.MqttDevice>().ToList();


MyHandler caught : System.ObjectDisposedException: Cannot access a disposed object.

Object name: 'SQLitePCL.sqlite3_stmt'.

   at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)

   at SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_column_count(sqlite3_stmt stmt)

   at Microsoft.Data.Sqlite.SqliteDataRecord.GetName(Int32 ordinal)

   at SqlSugar.DbBindAccessory.GetDataReaderNames(IDataReader dataReader, String& types)

   at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader)

   at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)

   at SqlSugar.QueryableProvider`1._ToList[TResult]()

   at SqlSugar.QueryableProvider`1.ToList()

   at NComServer.Mqtt.MqttAutoTask.OnCallerEventAsync(Object source, ElapsedEventArgs e) in E:\Develop\NCom\NComServer\NComServer\Mqtt\MqttAutoTask.cs:line 77

   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)

   at System.Threading.QueueUserWorkItemCallback.Execute()

   at System.Threading.ThreadPoolWorkQueue.Dispatch()

   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() | 


MyHandler caught : System.InvalidOperationException: Invalid attempt to call FieldCount when reader is closed.

   at Microsoft.Data.Sqlite.SqliteDataReader.get_FieldCount()

   at SqlSugar.DbBindAccessory.GetDataReaderNames(IDataReader dataReader, String& types)

   at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader)

   at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader)

   at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj)

   at SqlSugar.QueryableProvider`1._ToList[TResult]()

   at SqlSugar.QueryableProvider`1.ToList()

   at NComServer.DALs.MqttDevice.GetAll(SqlSugarScope db) in E:\Develop\NCom\NComServer\NComServer\DALs\MqttDevice.cs:line 29

   at NComServer.Mqtt.MqttAutoTask.OnCallerEventAsync(Object source, ElapsedEventArgs e) in E:\Develop\NCom\NComServer\NComServer\Mqtt\MqttAutoTask.cs:line 61

   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)

   at System.Threading.QueueUserWorkItemCallback.Execute()

   at System.Threading.ThreadPoolWorkQueue.Dispatch()

   at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart() | 



3、db.GetConnectionScope(Base.Db).Insertable(command).ExecuteCommand();


时间同步异常:System.NullReferenceException: Object reference not set to an instance of an object.

   at Microsoft.Data.Sqlite.SqliteConnection.Close()

   at SqlSugar.AdoProvider.Close()

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

   at SqlSugar.InsertableProvider`1.ExecuteCommand()

   at NComServer.DALs.MqttCommand.Create(SqlSugarScope db, MqttCommand command, String OperatorId) in E:\Develop\NCom\NComServer\NComServer\DALs\MqttCommand.cs:line 25

   at NComServer.Mqtt.MqttAutoTask.SendTime() in E:\Develop\NCom\NComServer\NComServer\Mqtt\MqttAutoTask.cs:line 136 | 


热忱回答3