Explicit Default Handling Prior to MySQL 8.0.13 If a default value evaluates to a data type that differs from the declared column type, implicit coercion to the declared type occurs according to the usual MySQL type-conversion rules. See Section 12.3, “Type Conversion in Expression Evaluation” . With one exception, the default value specified in a  DEFAULT  clause must be a literal constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as  NOW()  or  CURRENT_DATE . The exception is that, for  TIMESTAMP  and DATETIME  columns, you can specify  CURRENT_TIMESTAMP  as the default. See Section 11.2.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME” . The  BLOB ,  TEXT ,  GEOMETRY , and  JSON  data types cannot be assigned a default value. If a default value evaluates to a data type that differs from the declared column type, implicit coercion to the declared type occurs according to the usual MySQL type-conversion rules. See Section 12.3, “Type Conversion in Expression Evaluation” . If a data type specification includes no explicit  DEFAULT  value, MySQL determines the default value as follows: If the column can take  NULL  as a value, the column is defined with an explicit  DEFAULT NULL  clause. If the column cannot take  NULL  as a value, MySQL defines the column with no explicit  DEFAULT  clause. For data entry into a  NOT NULL  column that has no explicit  DEFAULT  clause, if an  INSERT  or  REPLACE statement includes no value for the column, or an  UPDATE  statement sets the column to  NULL , MySQL handles the column according to the SQL mode in effect at the time: Suppose that a table  t  is defined as follows: CREATE TABLE t (i INT NOT NULL); In this case,  i  has no explicit default, so in strict mode each of the following statements produce an error and no row is inserted. When not using strict mode, only the third statement produces an error; the implicit default is inserted for the first two statements, but the third fails because  DEFAULT(i)  cannot produce a value: See Section 5.1.11, “Server SQL Modes” . For a given table, the  SHOW CREATE TABLE  statement displays which columns have an explicit  DEFAULT clause. Implicit defaults are defined as follows: 2086 INSERT INTO t VALUES(); INSERT INTO t VALUES(DEFAULT); INSERT INTO t VALUES(DEFAULT(i)); Explicit Default Handling Prior to MySQL 8.0.13 Implicit Default Handling •If strict mode is not enabled, MySQL sets the column to the implicit default value for the column data type. •If strict SQL mode is enabled, an error occurs for transactional tables and the statement is rolled back. For nontransactional tables, an error occurs, but if this happens for the second or subsequent row of a multiple-row statement, the preceding rows are inserted.