onunix 2012-05-16 10:17:56 4206次浏览 13条回复 0 0 0

通过CRUD生成的代码,发现,Mysql数据库中只要有Date类型,并且create操作时,该字段不填(为空),就无法create成功。报错如下所示:

CDbCommand 无法执行 SQL 语句: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '' for column 'Year' at row 1. The SQL statement executed was: INSERT INTO `projectincomecost` (`Year`, `ServiceType`, .....

有什么办法可以使空的日期能够插进去吗?

  • 回复于 2012-05-16 15:56 举报

    数据库里‘year’字段是否允许为空?
    [attach]722[/attach]

  • 回复于 2012-05-16 16:52 举报

    检查了一下,不是这个问题,我的Mysql中对应表对应字段是允许NULL的,问题在于没有输入的情况下,insert的sql语句试图插入一个'',对于字符串是OK的,但是如果为日期类型,就会出错了,看起来这像是Yii的的CRUD的一个bug吧。

  • 回复于 2012-05-17 09:30 举报

    请问使用CRUD,你们有没有插入空的Mysql的Date类型数据成功过?如果大家都没有成功,那真的是个bug,如果你们成功了,我没有成功,那倒可能是我这边的系统有点问题。

  • 回复于 2012-05-17 10:20 举报

    我觉得应该是你自己的问题吧,可能是我没太看懂你的问题,我测试了下,可以,稍后截图。我可能还不会发图,等会试试

  • 回复于 2012-05-17 10:26 举报

    [attach]723[/attach]

    [attach]724[/attach]

    [attach]725[/attach]

  • 回复于 2012-05-17 16:53 举报

    报的错误很明显啊,说的是year这个字段类型不匹配,而且,你在 insert into table('year'.......) 的时候 有这个字段,也许你后面给它空串值, 这时空串值并不是Date类型,所以会报错。
    我认为的解决办法:插入的时候不要插入year这个字段

  • 回复于 2012-05-17 16:55 举报

    或者 year这个字段 值为 NULL 应该也是可以的吧?

  • 回复于 2012-05-17 17:07 举报

    你设一个默认值不久ok了?在模型里边

  • 回复于 2012-05-18 09:35 举报

    谢谢,按照这种方法搞定,猫咪兔能够成功是不是也设了缺省值啊?

  • 回复于 2012-05-31 15:21 举报

    在模型里边设置默认值的方法太麻烦,我经常修改了表结构后,重新生成模型,然后手工修改模型,我希望有其他方法,例如,在数据库脚本中 创建表时,对该字段加个 default null,或者其他方式,希望达到目的(日期不填写,可以插入成功),而又不需要手动修改模型文件,请问有这样的方法么?

  • 回复于 2012-05-31 16:27 举报

    在beforesave()里写个默认值

  • 回复于 2012-05-31 17:40 举报

    请问 beforesave()在哪里?

  • 回复于 2012-06-01 08:03 举报

    在控制器中写就行,beforesave()方法是重写父类ccontroller里的 beforesave() 方法

您需要登录后才可以回复。登录 | 立即注册