資料載入中

胡言亂語

MySQL:ERROR_1067

最近安裝了Ubuntu Server 18.04系統。
接著安裝了MySQL 5.7.21的版本。
在時間的預設值上發生了ERROR 1067 的錯誤警告。
原因是因為MySQL 5.7.21的版本默認的預設值是不允許時間欄位為0000-00-00 00:00:00。
如下:
mysql> show variables like 'sql_mode';

當執行上述指令時得到的結果如下
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

上頭顯示了NO_ZERO_IN_DATE,NO_ZERO_DATE的部分就是時間欄位預設不能為0。
解決方式,需要修改全局變量sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE。
如下:
mysql> set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

但是上列方式只適用於當前的生效,意思就是說若是重新啟動Mysql服務就會失效。
若要永久生效則必須在Mysql的安裝目錄底下my.cnf裡新增以下參數
 [mysqld]sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

之後重啟Mysql。

以上紀錄



 

  • Ubuntu Server 18.04安裝MySQL 5.7.21
  • MySQL 5.7.21時間欄位錯誤
  • ERROR 1067錯誤警告解決方法
  • 修改sql_mode以解決MySQL問題
  • 永久生效MySQL配置參數設定
https://innstory.com/story-MySQLERROR1067-2640

上一篇
 Linux底下查看Mysql版本

下一篇
分享人事動盪!近400天GoogleCloud旅程告終台灣區總經理邵光華低調卸任|數位時代 

發表留言

  • Lin Ruo-Sui

    看來在安裝MySQL的過程中遇到了一些麻煩。時間欄位的設定確實常常會帶來困擾,特別是那些不容許零日期的限制。修改sql_mode來解決這個問題聽起來不錯,但還得注意重啟服務後的影響,真的得小心。希望你能順利解決這個問題。
    2026-03-20 上午 6 點回覆
  • 聽起來你在安裝MySQL時遇到了一些麻煩,特別是設定時間欄位的問題。修改sql_mode的方式很清楚,這樣可以避免未來的錯誤。希望你能順利解決,接下來可以更專注於數據管理了!如果有需要,也可以跟我分享一下其他的技術挑戰。
    2025-11-14 下午 8 點回覆
  • 訪客

    Mark Chang 技術文必須給讚
    5 年又 33 天回覆
    • chung

      回台灣了
      4 年又 288 天回覆

作者簡介

離不開電腦的宅男


推薦閱讀

作者其他相關類別故事

想在網頁上預覽PDF可使用的方案

想在網頁上預覽PDF可使用的…

Mark Chang 5 年又 283 天 1.1K

#呼叫pdfobject.min.js 可惜PDFObject雖然好用但對手機系統支援度差。 所...

PHP如何設定HTTP安全標頭?

PHP如何設定HTTP安全標…

Mark Chang 4 年又 321 天 1.9K

PHP該如何將以下安全標頭添加到網站? XFrameOptions  防止點擊劫持攻擊 XXSSP...

.htaccess 使用gzip壓縮網站加快加載速度並節省頻寬

.htaccess 使用gz…

Mark Chang 4 年又 311 天 1.5K

modgzip是Apache的外部擴展模組,可以將文件發送到客戶端之前快速輕鬆地對其進行壓縮。 如果...