問題描述
十三在 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喜歡的朋友可以關注一下。