mysql爲datetime類型的字段設置默認值current_timestamp,引起 Invalid default value for 錯誤

【原由】mysql

  在本地數據庫執行測試平臺數據庫結構文件data_struct.sql,執行建表語句相似以下:sql

CREATE TABLE `demo` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` longtext COLLATE utf8_bin, `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

  過程當中過程當中發現以下錯誤數據庫

ERROR 1067 (42000): Invalid default value for 'create_time'

【通過】測試

  在google了緣由以後,又結合本身的狀況,發現了問題緣由。google

  網友猜想的緣由有:spa

    1.mysql配置中sql_mode設置的不對(第一反應也是這個),檢查本身的配置沒有發現問題code

    2.mysql版本的緣由(問題的根因)blog

【結果】class

  看到版本的緣由以後,對本身的mysql進行了版本檢查,發現測試平臺是5.7的版本,本身使用的是5.5版本。使用current_timestamp做爲datetime的默認值,只有在5.6以後的版本才支持。配置

【解決方案】

  升級本地的數據庫版本。

相關文章
相關標籤/搜索