Unable to convert MySQL date/time value to System.DateTime
今天似乎特别忙,三个版本压在一块儿,而且有一个版本发布出去老是有问题,因为是外网,所以必须忙上改,就加了一个ModifyTime字段,结果数据库里面存成0000-00-00 00:00,在程序里面转成DateTime的时候出错,报错信息为:Unable to convert MySQL date/time value to System.DateTime,这个Model我只是加了字段,并且我都没有跟ModifyTime赋值,怎么会有这个问题呢?
第一个解决方式,根据测试同学说的,直接在ModifyTime上面赋值为DateTime.Now再存库,但是我始终觉得不妥,因为这样的话,每一个存库操作都必须要给ModifyTime赋值,而原来是不需要的,迫于解决外网用户的问题,我只好先这样做。
发出去之后,修改又报错,原因是以前的0000-00-00 00:00数据,在修改之前都是读了一次数据库的,结果又是转换出错,咨询前辈们,说这个只能升库。另外一个说,要么你把ModifyTime 字段干掉,要么你就给他赋值,但是都解决不了,现在这个问题。
后来,我自己想找找什么原因,发现我自己加了一个ModifyTime,因为我发现数据库里面有这个字段,但是Model里面却没有,手抖加了一伙,目测就是这个地方的问题,于是我改了之后,想提过去,因为我本地环境有问题,一直调不起。所以我只好发给测试,让他去测。
发出去之后,还是有问题,并且影响到其他地方了。所有有关这个表的保存地方都报错。测试同学很快就找到我,一起看这个问题,本地调试后看到报错信息为:Parameter '@ModifyTime' must be defined.我想就是那个ModifyTime的原因,我又想到是一个orm.xml的配置文件的问题,于是我就让测试同学把之前的版本找给我看(我自己在他们的文件里面找不到),后来还是发现是我手抖把配置文件里面,多加另一个ModifyTime字段。
据前辈们解释说,因为在orm.xml文件里面,写了这个字段,并且不能为null,于是数据库就自动存了一个0000-00-00 00:00进去。
总结一下,就是不要随便去改程序,因为你不知道哪里会报错,先要确信一下经过那么多测试,程序本身是没有多大的问题,那么写就有那么写的原因,不要乱加东西,不要太有代码洁癖了,否则会给自己添麻烦的,不过通过这个东西,了解到一个新的东西,也算是一个收获,在三个版本都在手上的时候,我能处理好一个也算小有收获,只是另一个版本就稍有延迟,也是在最后发现跟原来想的不一样要改一点东西。估计后面还要改点东西,那个地方测试和研发都没有想好,不晓得应该怎么办,先这样吧。
c#DateTime.MinValue的值为:0001-01-01 00:00:00,将"0000-00-00 00:00"转换成C#的日期时间就会报错。
出处:http://www.cnblogs.com/BestNow/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?