背景

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'.
 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐