记录Error 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column ‘xxx‘ can‘t have a default value
背景
mysql部分列在设置默认值时是不允许的,否则报错:
Error 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column 'xxx' can't have a default value
汇总一下,不能设置默认值的如下。
1、BLOB 和 TEXT 类型
包括TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这是因为这些数据类型用于存储大量文本或二进制数据,设置默认值可能会导致内存问题。
2、DATE, TIME, DATETIME, 和 TIMESTAMP 类型
在某些旧版本的MySQL中,直接为这些日期和时间类型设置默认字符串值(如'1996-01-23')是不允许的。但是可以使用以下方法来设置默认值:
对于DATE, DATETIME, 或 TIMESTAMP 类型,可以使用 DEFAULT CURRENT_DATE, DEFAULT CURRENT_TIMESTAMP, 或 DEFAULT NOW()。
对于TIME类型,可以使用 DEFAULT '00:00:00' 或 DEFAULT CURRENT_TIME。
3、用户定义的列类型(UDF)
如果定义了自己的列类型并它不支持默认值,那么你将无法为这种类型的列设置默认值。
4、具有某些属性的列
如自增列(AUTO_INCREMENT)或者列为NULL且未启用严格模式(STRICT_TRANS_TABLES)时,可能也无法设置默认值。
5、启用严格模式(STRICT_TRANS_TABLES)
在此情况下,对于NOT NULL的列,如果尝试设置一个无效的默认值(例如,对整数列设置文本默认值),也会导致错误。
6、其它的类型:GEOMETRY、 JSON等。
举例如,某列为JSON类型,若设置默认值,将报错:
Error 1101 (42000): BLOB, TEXT, GEOMETRY or JSON column 'xx' can't have a default value
插入数据时若插入空字符串,将报错:
Error 3140 (22032): Invalid JSON text: "The document is empty." at position 0 in value for column 'x.xx'.
更多推荐
所有评论(0)