本文为您介绍空值的使用无效及相关报错及处理方式。
报错:ERROR1138(22004)
错误码
错误码:5596
兼容 MySQL 错误码:1138
错误信息
ERROR1138(22004) : Invalid use of NULL value
示例
创建 tny 表,创建完成后修改 id 字段的属性及设置非空的时候,报空值的使用无效错误。
obclient> CREATE TABLE tny (
id DECIMAL COMMENT '主键',
trade_no VARCHAR(64),
channel VARCHAR(2)
);
Query OK, 0 rows affected
obclient> DESC tny;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| id | decimal(10,0) | YES | | NULL | |
| trade_no | varchar(64) | YES | | NULL | |
| channel | varchar(2) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
3 rows in set
obclient> ALTER TABLE tny MODIFY id DECIMAL(40,2) NOT NULL;
ERROR 1138 (22004): Invalid use of NULL value
如何处理
由于 OceanBase 数据库目前版本 V3.2.3(同时包括 1.x、2.x 和 3.x 的所有版本)的 MySQL 租户不支持建表后直接修改列的 NOT NULL 约束,需要在建表时就将字段设置为非空,具体如下示例所示:
创建
tny1表,并将字段设置为非空。obclient> CREATE TABLE tny1 ( id DECIMAL not null COMMENT '主键', trade_no VARCHAR(64) not null, channel VARCHAR(2) not null ); Query OK, 0 rows affected查看
tny1表结构。obclient> DESC tny; +----------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+-------+ | id | decimal(10,0) | NO | | NULL | | | trade_no | varchar(64) | NO | | NULL | | | channel | varchar(2) | NO | | NULL | | +----------+---------------+------+-----+---------+-------+ 3 rows in set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




