项目--Unable to convert MySQL date/time value to System.DateTime

    头一次通过查全英资料解决项目中的问题,写个博客算是个里程碑吧。

                                                                                ----前言


【情景再现】

        最近项目过程中遇到了许多bugs,如图,就是其中一个:

         

       鉴于之前了解过mysql"The world's most popular open source database",会有非常多的开源代码和资料可以查询,So,点了些英文的论坛进去瞧了瞧。

 

【问题缘由】

       经过查资料,这是因为在数据表中日期列中有"0000-00-00"数据值,不出所料,在插入数据的时候,TimeSpan字段没有自动更新,"0000-00-00"就在那里,So,这个时候基本可以自己独立解决掉这个问题了。


【解决办法】

     (1)要修正这个问题,可以把这些数据设为null,或者在连接字符串中设置"AllowZero Datetime=True"

       As shown in this picture:

      

    代码如下:

<connectionStrings>   <add name="MyContext"connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convertzero datetime=True" providerName="MySql.Data.MySqlClient" /></connectionStrings>

     原理:在程序端web.config中说明允许Zero Datetime这种格式传入到代码,这样子VS就把这个"0000-00-00"当做一种时间日期格式来处理。


      (2)将数据库中该字段设置默认值:

        

     代码如下:

update table set date = null  //更新数据表,使得TimeSpan字段默认为null
        原理:在表中插入数据时,如果没有对TimeSpan字段传值,则数据库自动为其填充"null"值,这样程序在读取数据库中数据时候就不会因为不认识"0000-00-00"这种类型而报错。

       分析:这种方法可以避免这个错误,但是对我来说TimeSpan存在的意义就丧失了,最好还是能够使得TimeSpan获得到值。


      (3)在格式上,其实使用mysqlconnection链接在传递日期/时间时有不同的格式(yyyy-mm-dd),可以上这个网站上去参考:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html (mysql一个官方性性质的外文网站)


       我的办法:在mysql数据表插入数据时直接为TimeSpan传递一个当前时间,这样既能让TimeSpan字段起作用,又能够避免"Unable to convert MySQL date/time value to System.DateTime"这个因为mysql日期格式所引发的错误。


       总结:问题虽小,通过查外文资料解决问题却是我编程事业上的一大步。

                

 

                                                                                                                                                                           

 

 

 

      



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值