MYSQL OrmLiteWriteCommandExtensions
MYSQL OrmLiteWriteCommandExtensions
我在日志中收到来自 OrmLiteWriteCommandExtensions 的错误,我似乎无法找到发生这种情况的位置。我没有丢失数据;当我将 logfactiory 设置为 null 时,它会在没有错误的情况下中断;我已将其设置为允许零日期,但这没有帮助。我不确定如何调试或绕过它。它用我无法跟踪的语句阻塞了我的日志。
这发生在 linux 和 windows 上。
有没有人知道如何做到这一点?
OrmLiteWriteCommandExtensions System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
at System.DateTime.ParseExact(String s, String format, IFormatProvider provider, DateTimeStyles style)
at ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(String dateTimeStr)
at ServiceStack.OrmLite.Converters.DateTimeConverter.FromDbValue(Type fieldType, Object value)
at ServiceStack.OrmLite.OrmLiteWriteCommandExtensions.PopulateWithSqlReader[T](T objWithProperties, IOrmLiteDialectProvider dialectProvider, IDataReader reader, Tuple`3[] indexCache, Object[] values)
更新:
日志记录发生在 nlog 配置文件中的正确文件集中,但仅对于此异常,它不符合 NLOG 布局集中的格式(所有其他异常都符合!)。
布局字符串:
${longdate} ${machinename} ${logger} ${level} ${message} ${oneexception:EXCEPTION OCCURRED:${exception:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method }}
UPDATE2 已解决:
所以这很有趣...在我开始解释我是如何解决它之前我不得不说我不知道为什么它写入正确的日志文件,但忽略所有记录错误的格式 - 这是另一个再杀一次龙。
所以问题是 mysql 数据库中的一个 varchar 字段将生日作为字符串,并且 dotnet 中的 DateTime 到字符串之间的隐式转换会出错。
在数据库中将字段更改为日期时间后,错误消失了。
有趣的是,我不得不设置最小级别来跟踪以获取上下文中调用数据库的错误 - 但它仍然忽略了所有错误格式,没有堆栈跟踪,没有 sql 语句,并且没有与日志中的错误关联的行号。
所以问题是 mysql 数据库中的一个 varchar 字段将生日作为字符串,并且 dotnet 中的 DateTime 到字符串之间的隐式转换会出错。
在数据库中将字段更改为日期时间后,错误消失了。
有趣的是,我必须设置 minlevel 来跟踪以在调用数据库的上下文中获取错误 - 但它仍然忽略所有错误格式,没有堆栈跟踪,没有 sql 语句,并且没有与日志中的错误关联的行号。
我在日志中收到来自 OrmLiteWriteCommandExtensions 的错误,我似乎无法找到发生这种情况的位置。我没有丢失数据;当我将 logfactiory 设置为 null 时,它会在没有错误的情况下中断;我已将其设置为允许零日期,但这没有帮助。我不确定如何调试或绕过它。它用我无法跟踪的语句阻塞了我的日志。
这发生在 linux 和 windows 上。
有没有人知道如何做到这一点?
OrmLiteWriteCommandExtensions System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) at System.DateTime.ParseExact(String s, String format, IFormatProvider provider, DateTimeStyles style) at ServiceStack.Text.Common.DateTimeSerializer.ParseShortestXsdDateTime(String dateTimeStr) at ServiceStack.OrmLite.Converters.DateTimeConverter.FromDbValue(Type fieldType, Object value) at ServiceStack.OrmLite.OrmLiteWriteCommandExtensions.PopulateWithSqlReader[T](T objWithProperties, IOrmLiteDialectProvider dialectProvider, IDataReader reader, Tuple`3[] indexCache, Object[] values)
更新:
日志记录发生在 nlog 配置文件中的正确文件集中,但仅对于此异常,它不符合 NLOG 布局集中的格式(所有其他异常都符合!)。
布局字符串: ${longdate} ${machinename} ${logger} ${level} ${message} ${oneexception:EXCEPTION OCCURRED:${exception:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method }}
UPDATE2 已解决:
所以这很有趣...在我开始解释我是如何解决它之前我不得不说我不知道为什么它写入正确的日志文件,但忽略所有记录错误的格式 - 这是另一个再杀一次龙。
所以问题是 mysql 数据库中的一个 varchar 字段将生日作为字符串,并且 dotnet 中的 DateTime 到字符串之间的隐式转换会出错。
在数据库中将字段更改为日期时间后,错误消失了。
有趣的是,我不得不设置最小级别来跟踪以获取上下文中调用数据库的错误 - 但它仍然忽略了所有错误格式,没有堆栈跟踪,没有 sql 语句,并且没有与日志中的错误关联的行号。
所以问题是 mysql 数据库中的一个 varchar 字段将生日作为字符串,并且 dotnet 中的 DateTime 到字符串之间的隐式转换会出错。
在数据库中将字段更改为日期时间后,错误消失了。
有趣的是,我必须设置 minlevel 来跟踪以在调用数据库的上下文中获取错误 - 但它仍然忽略所有错误格式,没有堆栈跟踪,没有 sql 语句,并且没有与日志中的错误关联的行号。