MySQL 建表時 date 類型的默認值設置


在執行下面 SQL 語句時發現報錯

CREATE TABLE `jc_site_access_pages` (
  `access_date` date NOT NULL DEFAULT '0000-00-00' COMMENT '訪問日期',
  `access_time` time NOT NULL COMMENT '訪問時間',
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='訪問詳細頁面表';

報的錯誤是時間的默認值有錯誤,查閱后發現 MySQL 5.7 版本開始有了一個 STRICT MODE(嚴格模式),此模式中對默認值做了一些限制。

解決方法就是修改 sql_mode

-- 查看當前
select @@sql_mode;

-- 去掉 NO_ZERO_IN_DATE 和 NO_ZERO_DATE
set @@sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); 

-- 查看全局
select @@global.sql_mode;

set @@global.sql_mode=(select replace(@@global.sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));

設置完成后重新連接 MySQL 即可


https://blog.csdn.net/l631768226/article/details/77105047

https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM