如果确定未使用显式默认值,请检查严格模式:
SELECT @@GLOBAL.sql_mode;SELECT @@SESSION.sql_mode;
MySQL数据类型默认值
从MySQL 5.0.2开始,如果列定义不包含任何显式的DEFAULT值,则MySQL将按以下方式确定默认值:
如果该列可以采用NULL作为值,则使用显式的DEFAULT NULL子句定义该列。这与5.0.2之前的版本相同。
如果该列不能使用NULL作为值,则MySQL定义该列时不使用显式的DEFAULT子句。对于数据输入,如果INSERT或REPLACE语句不包含该列的值,或者UPDATE语句将该列设置为NULL,则MySQL将根据当时有效的SQL模式处理该列:
- 如果未启用严格的SQL模式,则MySQL将列设置为列数据类型的隐式默认值。
*如果启用严格模式,则事务表将发生错误,并且该语句将回滚。对于非事务处理表,会发生错误,但是如果此错误发生在多行语句的第二行或后续行中,则会插入前面的行。
服务器SQL模式



