首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL "Error performing load command" 解決:Date 類型字段默認值 '0000-00-00' 導致讀取失敗

     編輯:MySQL 資料庫相關知識

錯誤現象

could not read column value from result set: birthday

映射文件、字段定義均無誤,但讀取 birthday 字段報錯。

根因定位

  • birthday 定義為 DATE 類型。
  • 表中已有記錄的 birthday 默認值為 '0000-00-00'(MySQL 允許的「零日期」)。
  • JDBC/ODBC/ORM 驅動在將 '0000-00-00' 映射為 Java java.sql.Date / LocalDate 時拋出異常,因這不是合法公曆日期。

解決方案

  1. 修正髒數據(推薦):
    UPDATE t SET birthday = '1970-01-01' WHERE birthday = '0000-00-00';
  2. 調整驅動配置(治標): MySQL Connector/J 加連接參數 zeroDateTimeBehavior=convertToNull(轉為 NULL)或 round,但業務語義可能改變。
  3. 表定義層面預防: 新表定義 birthday DATE NOT NULL DEFAULT '1970-01-01' 或允許 NULL。

延伸:sql_mode 影響

MySQL 5.7+ 默認 sql_mode 含 NO_ZERO_DATE,禁止寫入 '0000-00-00',新建表不會出現此問題;舊庫升級需清理歷史數據。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved