問題:1364 - Field 'data' doesn't have a default valuemysql
data字段設置爲非空,默認mysql是不容許插入的sql
show variables like 'sql_mode%' 默認值:STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION(對應版本5.6.23)數據庫
方案1:插入語句加入data字段函數
方案2: 修改sql_mode值測試
vi /etc/my.cnf事務
[mysqld]該段落下加入或修改sql-mode值爲開發
sql-mode="NO_ENGINE_SUBSTITUTION"字符串
便可編譯
最後重啓mysql服務變量
sql_mode是個很容易被忽視的變量,默認值是空值,在這種設置下是能夠容許一些非法操做的,好比容許一些非法數據的插入。在生產環境必須將這個值設置爲嚴格模式,因此開發、測試環境的數據庫也必需要設置,這樣在開發測試階段就能夠發現問題
sql_mode經常使用值以下:
ONLY_FULL_GROUP_BY:
對於GROUP BY聚合操做,若是在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,由於列不在GROUP BY從句中
NO_AUTO_VALUE_ON_ZERO:
該值影響自增加列的插入。默認設置下,插入0或NULL表明生成下一個自增加值。若是用戶 但願插入的值爲0,而該列又是自增加的,那麼這個選項就有用了。
STRICT_TRANS_TABLES:
在該模式下,若是一個值不能插入到一個事務表中,則中斷當前的操做,對非事務表不作限制
NO_ZERO_IN_DATE:
在嚴格模式下,不容許日期和月份爲零
NO_ZERO_DATE:
設置該值,mysql數據庫不容許插入零日期,插入零日期會拋出錯誤而不是警告。
ERROR_FOR_DIVISION_BY_ZERO:
在INSERT或UPDATE過程當中,若是數據被零除,則產生錯誤而非警告。如 果未給出該模式,那麼數據被零除時MySQL返回NULL
NO_AUTO_CREATE_USER:
禁止GRANT建立密碼爲空的用戶
NO_ENGINE_SUBSTITUTION:
若是須要的存儲引擎被禁用或未編譯,那麼拋出錯誤。不設置此值時,用默認的存儲引擎替代,並拋出一個異常
PIPES_AS_CONCAT:
將"||"視爲字符串的鏈接操做符而非或運算符,這和Oracle數據庫是同樣的,也和字符串的拼接函數Concat相相似
ANSI_QUOTES:
啓用ANSI_QUOTES後,不能用雙引號來引用字符串,由於它被解釋爲識別符
ORACLE的sql_mode設置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.