MYSQL OrmLiteWriteCommandExtensions

标签 mysql .net mono

我在日志中收到来自 OrmLiteWriteCommandExtensions 的错误,而且我似乎无法找到发生这种情况的位置。我没有丢失数据;当我将 logfactory 设置为 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:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method }}

更新2已解决:

所以这很有趣......在我开始解释如何解决它之前,我不得不说我不知道​​为什么它会写入正确的日志文件,但忽略所有日志记录错误的格式 - 这是另一条龙再杀一次。

所以问题是mysql数据库中的varchar字段将出生日期作为字符串,并且dotnet中的DateTime到字符串之间的隐式转换出现错误。

将数据库中的字段更改为日期时间后,错误消失了。

有趣的是,我必须设置 minlevel 来跟踪,以在调用数据库的上下文中获取错误 - 但它仍然忽略所有错误格式,没有堆栈跟踪,没有 sql 语句,也没有与日志中的错误。

最佳答案

所以问题是 mysql 数据库中的 varchar 字段将生日作为字符串,并且 dotnet 中的 DateTime 到字符串之间的隐式转换出现错误。

将数据库中的字段更改为日期时间后,错误消失了。

有趣的是,我必须设置 minlevel 来跟踪,以在调用数据库的上下文中获取错误 - 但它仍然忽略所有错误格式,没有堆栈跟踪,没有 sql 语句,也没有与日志中出现错误。

关于MYSQL OrmLiteWriteCommandExtensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41871243/

相关文章:

PHP mysqli 准备语句无法正常工作

mysql - 如何使用命令行连接mysql数据库,并且数据库名称含有非法字符 ‘-’?

c# - EntityFramework Code First 对属性 getter/setter 做了什么?

.net - MVC3 路由 : passing a portion of the route as a "path" parameter

c# - 如何为类库包含 log4net?

c# - 更新到 netcore3.0-preview8 后 Blazor Mono 客户端错误

php - 使用 PHP session 验证用户名

mysql - SQL 选择多个 AND

macos - OS X 上的 Monodevelop 并显示 UTF-8

c# - java 和 C# double 之间的区别