---
title: OceanBase 数据库 MySQL 租户对象大小写默认值-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 MySQL 租户对象大小写默认值相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 MySQL 租户对象大小写默认值的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

划线反馈

# OceanBase 数据库 MySQL 租户对象大小写默认值

更新时间：2026-05-26 02:31

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

本文主要介绍 OceanBase 数据库 MySQL 租户对象大小写区分参数默认值设置。

## MySQL 租户的大小写规则

OceanBase 数据库 MySQL 租户中，数据库对象的名称可分为以下三类：

| 类别 | 大小写区分规则 |
| --- | --- |
| 表名、数据库名、表的别名 | 大小写和比较方式受系统变量 `lower_case_table_names` 的影响。 默认情况下，业务租户的 `lower_case_table_names=1`，表示不区分大小写。 |
| 列名索引名列的别名 | 在内部持久化的时候存储为原始形式，比较时大小写不敏感 |
| 其他未列出数据库对象的名称 | 在内部持久化的时候存储为原始形式，比较时大小写敏感 |

其中 `lower_case_table_names` 取值的含义如下表所示。

| 值 | 含义 |
| --- | --- |
| 0 | * 表名和数据库名持久化内容为 CREATE TABLE 或 CREATE DATABASE 语句中的原始名。 * 表名和数据库名以及表的别名比较时大小写敏感。 |
| 1 | 表名和数据库名在存储前先转换为小写，表名数据库名包括表的别名在比较之前也会转换为小写。 |
| 2 | * 表名和数据库名持久化内容为 CREATE TABLE 或 CREATE DATABASE 语句中的原始名。 * 表名和数据库名以及表的别名大小写不敏感。 * 该取值只适用于大小写不敏感的文件系统。InnoDB 的表比较特殊，表名持久化之前会转成小写存储的。 |

#### 注意

OceanBase 数据库目前不支持修改 `lower_case_table_names`，该参数为只读参数，只能在创建租户时配置。

进行数据迁移时，如果 MySQL 数据库中默认使用区分大小写，创建了驼峰标识的表名，在不区分大小写的模式下可以正常查询表，但建议业务应用侧代码中对表名统一规范化小写方式。

## 验证方式

测试默认情况下，sys 租户与业务租户的大小写区分情况，以及验证 `lower_case_table_names` 是否可以修改。

1. 首先测试 OceanBase 数据库 MySQL 租户的大小写区分情况。

      - 创建大小写混合库名数据库 Abc，并测试大小写区分情况。

       ```unknow
       obclient> CREATE DATABASE Abc;
       Query OK, 1 row affected (0.08 sec)

       obclient> SHOW DATABASEs;
       +--------------------+
       | Database           |
       +--------------------+
       | oceanbase          |
       | information_schema |

       | SYS                |
       | LBACSYS            |

       | test               |
       | Abc                |
       +--------------------+
       6 rows in set (0.00 sec)

       ```
      - 创建大小写混合表名 Abc，并测试大小写区分情况。

       ```unknow
       obclient> CREATE TABLE Abc(t1 INTEGER PRIMARY KEY,t2 INTEGER);
       Query OK, 0 rows affected (0.12 sec)

       obclient> SHOW TABLES;
       +----------------+
       | Tables_in_test |
       +----------------+
       | Abc            |
       +----------------+
       1 row in set (0.00 sec)

       ```
      - 创建字段名为大写的测试表，并测试大小写区分情况。

       ```unknow
       obclient> CREATE TABLE Abc(t1 INTEGER PRIMARY KEY,T2 INTEGER);
       Query OK, 0 rows affected (0.03 sec)

       obclient> SHOW CREATE TABLE Abc\G
       *************************** 1. row ***************************
              Table: Abc
       Create Table: CREATE TABLE `Abc` (
         `t1` int(11) NOT NULL,
         `T2` int(11) DEFAULT NULL,
         PRIMARY KEY (`t1`)
       ) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.0' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10
       1 row in set (0.00 sec)

       ```
 2. 连接系统租户与普通租户查询默认参数设置。

   ```unknow
   SHOW GLOBAL variables LIKE 'lower_case_table_names';

   ```

      - sys 租户查询结果如下。

       ```unknow
       obclient> SHOW GLOBAL variables LIKE 'lower_case_table_names';
       +------------------------+-------+
       | Variable_name          | Value |
       +------------------------+-------+
       | lower_case_table_names | 2     |
       +------------------------+-------+
       1 row in set (0.01 sec)

       ```
      - 普通租户查询结果如下。

       ```unknow
       obclient> SHOW GLOBAL variables LIKE 'lower_case_table_names';
       +------------------------+-------+
       | Variable_name          | Value |
       +------------------------+-------+
       | lower_case_table_names | 1     |
       +------------------------+-------+
       1 row in set (0.01 sec)

       ```

   目前，OceanBase 数据库 sys 租户的 `lower_case_table_names` 的默认值为 2，MySQL 模式普通租户的 `lower_case_table_names` 的默认值为 1。

   因此 sys 租户与业务租户在大小写区分上有一定区别。
 3. 尝试在系统租户下修改普通账户 `lower_case_table_names` 设置。

      - sys 租户修改普通租户参数。

       显示未知系统配置，表示不支持修改。

       ```unknow
       obclient>  ALTER SYSTEM SET lower_case_table_names=0 TENANT ='xxxxxx';
       ERROR 5099 (42000): System config unknown

       ```
      - 在 sys 租户中修改 GLOBAL 或 SESSION 级别的参数。

       返回 `Variable 'lower_case_table_names' is a read only variable`，表示 `lower_case_table_names` 参数为只读参数，不支持修改。

       ```unknow
       SET GLOBAL lower_case_table_names=0;
       ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable
       SET SESSION lower_case_table_names=0;
       ERROR 1238 (HY000): Variable 'lower_case_table_names' is a read only variable

       ```

Previous

[Oracle 迁移到 OceanBase 数据库常见不兼容对象的处理方式](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000501936)

Next

[OceanBase 数据库 MySQL 模式暂不支持的 DDL 命令总结](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207723) ![有帮助](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) 咨询热线
