1. 程式人生 > >匯入 SQL 時出現 Invalid default value for 'create_time' 報錯解決方法

匯入 SQL 時出現 Invalid default value for 'create_time' 報錯解決方法

問題描述

十三在 GitHub 倉庫中開源了一個 Spring Boot 技術棧開發的 My-Blog 專案:

因為功能比較多,資料的儲存就選擇了 MySQL 資料庫,該專案的表結構也放到了倉庫中,方便大家執行和使用這個開源部落格專案,期間一直有人提到題目中的這個問題,在匯入 SQL 語句到 MySQL 資料庫中的時候會報如下錯誤: Invalid default value for 'create_time' ,錯誤截圖如下:

由於不止一個朋友在群裡或者倉庫裡給我提這個問題,因此今天就整理一下解決方案。

方案一

重灌 MySQL 資料庫,版本選擇 5.7 或者 5.7 以上版本,這個方案有些粗暴,不喜歡粗暴的朋友可以繼續往下看。

方案二

這個錯誤的主要原因,是因為給了時間欄位的列預設值一個 CURRENT_TIMESTAMP 預設值,而這個預設值在低版本的 MySQL 中是不支援的,因此就出現了題目中的這個報錯,所以呢,把每個時間欄位的預設值修改一下即可,比如:

DROP TABLE IF EXISTS `tb_config`;

CREATE TABLE `tb_config` (
  `config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置項的名稱',
  `config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置項的值',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改時間',
  PRIMARY KEY (`config_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

改為

DROP TABLE IF EXISTS `tb_config`;

CREATE TABLE `tb_config` (
  `config_name` varchar(100) NOT NULL DEFAULT '' COMMENT '配置項的名稱',
  `config_value` varchar(200) NOT NULL DEFAULT '' COMMENT '配置項的值',
  `create_time` datetime DEFAULT NULL COMMENT '建立時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`config_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

就齊活了。

當然,也有錯誤示範,比如我讓別人改預設值,有個小老弟就改成了如下這個樣子:

希望大家不要犯同樣的錯誤。

方案三

以上兩種方案大家應該都看的懂,為了防止某些小老弟太秀,SQL 語句都不會改,又有了第三個方案,表結構開源了,欄位大家應該也都清楚,如果不會執行 SQL 語句,那你就自己建立表,把欄位一個個的建立了,這種方式也是可以滴。

一個一個的把欄位名稱和型別設定進去就可以了。

總結

好的,這次的問題答疑就到此結束啦,如果寫成這樣還是沒解決你的問題,我建議你換一個專案學學,我真的太難了。

My-Blog 的 GitHub 倉庫地址是 https://github.com/ZHENFENG13/My-Blog,Gitee 地址是 https://gitee.com/zhenfeng13/My-Blog喜歡的朋友可以關注一下