暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

空值的使用无效

SQL新手 2022-12-08
707

本文为您介绍空值的使用无效及相关报错及处理方式。

报错: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 约束,需要在建表时就将字段设置为非空,具体如下示例所示:

  1. 创建 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
    
  2. 查看 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论