mysql大字段(blob\text\json)默认值设置报错

[1101] [42000]: BLOB, TEXT, GEOMETRY or JSON column 'xxx' can't have a default value

mysql 执行 BLOB, TEXT, GEOMETRY or JSON 字段时,如果设置为 Not Null 话会报这个错。

解决方法

1、将字段设置为 DEFAULT NULL,当然这个不太符合规范,mqsql 官方建议不要使用 DEFAULT NULL。Null 也会占用空间

2、改配置文件

mysql 严格模式下,不允许给 blob text geomtry json 列增加默认值

可以使用 select @@sql_mode  查看当前模式

找到 mysql 安装根目录下的 my.ini 文件

sql-mode=”STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION”

转载链接(来自本人开源中国的账号)icon-default.png?t=N7T8https://my.oschina.net/u/4472666/blog/5294775

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
虽然MySQL 5.7及以上版本支持JSON数据类型,但如果您使用的是MySQL 5.6或更早版本,则无法使用JSON类型。在这种情况下,您可以考虑使用`BLOB`类型存储JSON数据。 使用`BLOB`类型存储JSON数据时,您需要将JSON字符串转换为二进制数据,然后将其存储在`BLOB`列中。在查询时,您需要将`BLOB`数据转换回JSON字符串,然后将其解析为JSON对象。 以下是使用`BLOB`类型存储JSON数据的示例: 首先,创建一个包含`BLOB`类型的列的表: ``` CREATE TABLE mytable ( id INT(11) NOT NULL AUTO_INCREMENT, data BLOB, PRIMARY KEY (id) ); ``` 然后,将JSON字符串转换为二进制数据,并将其插入到表中: ``` INSERT INTO mytable (data) VALUES (CONVERT('{"name": "John", "age": 30}' USING utf8mb4)); ``` 在上面的示例中,我们使用`CONVERT`函数将JSON字符串转换为二进制数据,并使用`utf8mb4`字符集进行编码。 最后,在查询时,我们需要将`BLOB`数据转换回JSON字符串,并将其解析为JSON对象。以下是查询并解析JSON数据的示例: ``` SELECT CAST(data AS CHAR) FROM mytable; ``` 在上面的示例中,我们使用`CAST`函数将`BLOB`数据转换回CHAR类型(即字符串),然后使用JSON函数解析JSON数据: ``` SELECT JSON_EXTRACT(CAST(data AS CHAR), '$.name') AS name FROM mytable; ``` 在上面的示例中,我们使用`JSON_EXTRACT`函数从JSON对象中选择`name`属性,并将其作为新的`name`列返回。 需要注意的是,使用`BLOB`类型存储JSON数据可能会对性能产生负面影响,并且在查询时需要进行额外的转换和解析。因此,如果您使用的是MySQL 5.7及以上版本,则最好使用JSON类型来存储和查询JSON数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值