線上 mysql 5.6 插入記錄 如果有非空字段沒有值 而且沒有設定預設值 ,插入失敗
線下 mysql 5.5 插入記錄 如果有非空字段沒有值 而且沒有設定預設值 ,插入成功
線上 :
select @@global.sql_mode\g
global.sql_mode : strici_trans_tables,no_engine_substitution
線下:select @@global.sql_mode\g
global.sql_mode : no_auto_create_user,no_engine_substitution
最後得出結論
1. 如果sql_mode 沒有設定strici_trans_tables,則在插入記錄時,如果有非空字段沒有值 而且沒有設定預設值,則引擎會
自動填充(int型別 填充0 string型別 填充 '' timestamp 型別填充 當前時間戳(2018-06-22 19:54:52)
2. 標準推薦設定 global.sql_mode : strici_trans_tables,no_engine_substitution
在mysql配置檔案my.cnf 或my.ini 中新增 sql_mode=no_engine_substitution,strict_trans_tables
mysql的sql_mode
****************************************===
mysql 中的空字串'' 與 null的區別
mysql建立欄位非空NOT NULL的好處
詳見 很多表都包含可為 null 空值 的列,即使應用程式井不需要儲存 null 也是如此 這是因為可為 null 是列的預設屬性。通常情況下最好指定列為 not null,除非真 的需要儲存 null 值。如果查詢中包含可為 null 的列,對 mysql 來說更難優化 因為可為 null 的列使...
查詢表中的總字段數 空欄位與非空欄位
select count 總字段數,isnull isnull sum case when isnullable 0 then 1 end null null as 非空字段數 from syscolumns where id object id t user 空欄位總數 select select...
mysql修改字段屬性及修改是否非空
在使用mysql的時候肯定會因為介面返回資料與資料庫字段型別不一致,或者int儲存太小只能改為string。這個時候就需要我們在資料庫裡面修改字段型別。一般情況下是先刪除字段,然後再新增,但是這樣就會導致資料丟失。不過我們可以選擇直接修改表的字段屬性並且可以修改為是否非空。sql語句 alter t...