最近在執行一個更新語句時報這個錯誤:Caused by: java.sql.SQLException: Data truncated for column 'last_apply_time' at row 1。
查百度說主要原因是在建表的列為特定類型,而所插入的數據類型沒與其字段一一對應。
原先使用的sql語句為:
UPDATE jc_supplier_funds SET last_apply_time = IFNULL((SELECT create_time FROM jc_jiesuan WHERE current_oprerate_type > 0 AND supplier_id = 'f6e7d269-3798-4f' AND status = 1 ORDER BY create_time desc LIMIT 1),0) WHERE supplier_id = 'f6e7d269-3798-4f' ;
通過查詢這兩個表的DDL發現:
jc_supplier_funds `last_apply_time` int(11) DEFAULT '0' COMMENT '上次申請時間',
jc_jiesuan `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '申請時間',
雖然這兩個字段都是表示時間,但在數據庫存的時候有的屬性不同導致了該問題!
sql修改為:
UPDATE jc_supplier_funds SET last_apply_time = IFNULL((SELECT UNIX_TIMESTAMP(create_time) FROM jc_jiesuan WHERE current_oprerate_type > 0 AND supplier_id = 'f6e7d269-3798-4f' AND status = 1 ORDER BY create_time desc LIMIT 1),0) WHERE supplier_id = 'f6e7d269-3798-4f' ;
就沒有問題了。