---
title: 非严格模式下 INSERT 分区裁剪报 4377-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于非严格模式下 INSERT 分区裁剪报 4377相关的常见问题和使用技巧，帮助您快速解决非严格模式下 INSERT 分区裁剪报 4377的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 非严格模式下 INSERT 分区裁剪报 4377

更新时间：2026-05-21 09:16

适用版本： V3.2.x 内容类型：Troubleshoot  

## 问题现象

该 BUG 复现的充分条件为： 1）多分区表，且涉及分区裁剪。 2）非严格模式向分区键插入 `null` 值。

```shell
set sql_mode='';
create table t1 (c1 int primary key) partition by key(c1) partitions 4; //primary key 默认 not null
insert into t1(c1) values(null), (null);

```

非严格模式下，向分区键插入 `null` 值时报如下错误。

```shell
check_new_row_partition_validity, fatal internal error(msg="Fatal Error!!! Catch a defensive error!", ret=-4377

```

## 关键诊断信息

### 触发条件

该 BUG 复现的充分条件为： 1）多分区表，且涉及分区裁剪。 2）非严格模式向分区键插入 `null` 值。

## 问题原因

在 OceanBase 数据库 V3.2.x 上实现非严格模式忽略 null 约束引入 目前优化器的设计上分配 `insert` 算子时优化器会进行分区裁剪，分配 `distribute insert` 时执行期动态计算。 非严格模式下，优化器按照 `null` 进行分区裁剪，但是实际上 `null` 是不能写入的，写的时候会写入当前数据类型的 `zero` 值，出现优化器裁剪错分区和执行器期间计算出的分区不一致问题，需要交给执行器期间动态运算，因为非严格模式下忽略 `null` 约束，应该分配 `distribut insert`，而不能分配普通的 `insert`。

## 问题风险及影响

导致优化器裁剪错分区和执行器期间计算出的分区不一致问题，读写数据的分区不符合预期。

## 影响租户

影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户，对于 SYS 租户无影响。

## 影响版本

OceanBase 数据库 V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本。

## 解决方法

- 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.2.4 BP3 Hotfix2（oceanbase-3.2.4.3-103020012023051810）、V3.2.4 BP4（oceanbase-3.2.4.4-104000052023062021）及之后版本。
 - 不使用非严格模式或不能向 `not null` 列插入 `null` 值。

## 规避方式

不使用非严格模式或不能向 `not null` 列插入 `null` 值。

上一篇

[删除分区失败，错误代码 1235](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000146)

下一篇

[分区中间插入新分区后，SQL 执行报错 -4377](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000225640) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
