您的位置:首页 > 产品设计 > UI/UE

Unable to convert MySQL date/time value to System.DateTime

2014-10-28 21:35 465 查看
  今天似乎特别忙,三个版本压在一块儿,而且有一个版本发布出去老是有问题,因为是外网,所以必须忙上改,就加了一个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#的日期时间就会报错。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: