---
title: MySQL 租户 SQL 执行报错误：-4016 内部错误-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于MySQL 租户 SQL 执行报错误：-4016 内部错误相关的常见问题和使用技巧，帮助您快速解决MySQL 租户 SQL 执行报错误：-4016 内部错误的难题。
---
切换语言

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

划线反馈

# MySQL 租户 SQL 执行报错误：-4016 内部错误

更新时间：2026-05-29 08:46

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

## 问题描述

执行一些应用变更后，应用突然报 -4016 异常，如下报错信息。

```shell
ERROR 4016 (HY000): Internal error

```

对应 OBServer 日志关于 -4016 的异常信息显示 user info is null，详细信息如下。

```shell
WARN  [SHARE.SCHEMA] check_db_priv (ob_schema_getter_guard.cpp:3598) [6241][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=4] [dc=0] invalid arguments((__builtin_expect(!!(__null != (user_info)),!!1))=0)
WARN  [SHARE.SCHEMA] check_single_table_priv (ob_schema_getter_guard.cpp:3502) [6241][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=14] [dc=0] user info is null(ret=-4016, session_priv.user_id_=1178676464976976)

```

## 问题原因

该问题是因为 session 所使用的 user 被删除重建导致，触发场景如下。

1. 用测试用户，建立一个会话 s1。
 2. 用 root 用户，打开一个新会话 s2，删除测试用户。
 3. s1 执行查询，报 -4016 错误。

通过 user_id 值作为过滤条件查询 __all_user 表，若 user_id 为空则说明是这个问题导致的。查询结果如下。

```shell
obclient [oceanbase]> select * from __all_user where user_id='1178676464976976';
Empty set (0.007 sec)

```

用户是新建的，之前的 user_id 不存在了，基本可以确定这个问题的原因就是老会话没断开的情况下，用户删除了，老会话执行 SQL 就会报错。

#### 注意

Oracle 租户的处理逻辑与 MySQL 不同，同样的场景下 Oracle 租户会报 ORA-01918: user does not exist。

## 适用版本

OceanBase 数据库 V2.x、V3.x 版本。

## 解决方法

重建链接或者重启应用。

上一篇

[如何路由到只读型副本查询数据](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003013354)

下一篇

[SQL 中指定的 Hint 不生效](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000217874) ![有帮助](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) 咨询热线
