日期时间值mysql57不正确

时间:2016-01-20 21:21:27

标签: mysql mysql-5.7

将我的mysql版本从5.6更新为5.7后,出现错误:

Incorect datetime value: 0000-00-00 00:00:00 for column 'create_time' at row 1

这是create_time的结构

`create_time` DATETIME DEFAULT '0000-00-00 00:00:00'

1 个答案:

答案 0 :(得分:1)

确保您运行的是比版本5.7.7更新的当前MySQL 5.7版本,或禁用严格模式。 Versions 5.7.4 to 5.7.7 incorporated NO_ZERO_DATE SQL mode into strict mode.

  

从MySQL 5.7.4开始,不推荐使用ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATENO_ZERO_IN_DATE SQL模式。从MySQL 5.7.4到5.7.7,这些模式在明确命名时不执行任何操作。相反,它们的效果包含在严格SQL模式(STRICT_ALL_TABLESSTRICT_TRANS_TABLES)的效果中。 换句话说,严格模式在这些版本中的含义与严格模式加上ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATENO_ZERO_IN_DATE的5.7.4之前含义相同。

     

通过包含ERROR_FOR_DIVISION_BY_ZERONO_ZERO_DATENO_ZERO_IN_DATE导致一些问题,MySQL 5.7.4更改为使严格模式更严格。例如,在具有严格模式但未启用NO_ZERO_DATE的MySQL 5.6中,可以使用TIMESTAMP定义DEFAULT '0000-00-00 00:00:00'列。 在具有相同模式设置的MySQL 5.7.4中,严格模式包括无法使用NO_ZERO_DATE定义TIMESTAMPDEFAULT '0000-00-00 00:00:00'列的效果。这会导致复制如果CREATE TABLE语句包含TIMESTAMPvar fileManager = NSFileManager.defaultManager() var fileHandle: NSFileHandle @IBAction func submitForm(sender: AnyObject) { mySingleton.filename = mySingleton.filename + ".csv" let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] let filePath = documentsPath + mySingleton.filename if !fileManager.fileExistsAtPath(mySingleton.filename) { fileManager.createFileAtPath(filePath, contents: nil, attributes: nil) fileHandle = ... } } ,则会失败。