Skip to content

lower_case_table_names 大小写敏感支持

关于 MatrixOne 大小写模式有 5 种,大小写参数 lower_case_table_names 可以设置为 0,1,2,3 和 4。

参数解释

参数值设置为 0

lower_case_table_names 设置为 0。标识符存储为原始字符串,名称比较大小写敏感。

示例

set global lower_case_table_names = 0;
create table Tt (Aa int);
insert into Tt values (1), (2), (3);

mysql> select Aa from Tt;
+------+
| Aa   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)

参数值设置为 1

lower_case_table_names 设置为 1。标识符存储为小写,名称比较大小写不敏感。

示例

set global lower_case_table_names = 1;
create table Tt (Aa int);
insert into Tt values (1), (2), (3);

mysql> select Aa from Tt;
+------+
| aa   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)
set global lower_case_table_names = 1;
create table t(a int);
insert into t values(1), (2), (3);

-- 列的别名在返回结果集时会显示原始字符串,但名称比较时大小写不敏感,示例如下:
mysql> select a as Aa from t;
+------+
| Aa   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)

参数值设置为 2

lower_case_table_names 设置为 2。标识符存储为原始字符串,名称比较时大小写不敏感。

示例

set global lower_case_table_names = 2;
create table Tt (Aa int);
insert into tt values (1), (2), (3);

mysql> select AA from tt;
+------+
| Aa   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)

参数值设置为 3

lower_case_table_names 设置为 3。标识符存储为大写,名称比较时大小写不敏感。

示例

set global lower_case_table_names = 3;
create table Tt (Aa int);
insert into Tt values (1), (2), (3);

mysql> select Aa from Tt;
+------+
| AA   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)

参数值设置为 4

lower_case_table_names 设置为 4。带有 `` 的标识符存储为原始字符串,大小写敏感,其他转小写。

配置参数

  • 如需全局配置,可在启动 MatrixOne 之前,修改配置文件 cn.toml,插入以下代码并保存:
[cn.frontend]
lowerCaseTableNames = "0" // 默认为 1
# 0 标识符存储为原始字符串,名称比较时大小写时,大小写敏感
# 1 标识符存储为小写,名称比较时大小写时,大小写不敏感
# 2 标识符存储为原始字符串,名称比较时大小写时,大小写不敏感
# 3 标识符存储为大写,名称比较时大小写时,大小写不敏感
# 4 带有``的标识符存储为原始字符串,大小写敏感,其他转小写

全局配置时,如果启动了多个 cn,那么每个 cn 都需要配置。如需查阅配置文件参数说明,参见通用参数配置

Note

当前仅支持设置参数为 0 或 1。但暂不支持设置为参数为 2,3 和 4。

  • 仅对当前会话开启保存查询结果:
set lower_case_table_names = 1;

在创建数据库时,MatrixOne 会自动获取 lower_case_table_names 的值,作为初始化数据库配置的默认值。

与 MySQL 有差异的特性说明

MatrixOne lower_case_table_names 默认设置为 1,且仅支持设置该值为 0 或 1。

MySQL 默认如下:

  • Linux 系统中该值为 0,表示表名和数据库名按照在 CREATE TABLE 或 CREATE DATABASE 语句中指定的字母大小写存储在磁盘上,且名称比较时区分大小写。
  • Windows 系统中该值为 1,表示表名按照小写字母存储在磁盘上,名称比较时不区分大小写。MySQL 在存储和查询时将所有表名转换为小写。该行为也适用于数据库名称和表的别名。
  • macOS 系统中该值为 2,表示表名和数据库名按照在 CREATE TABLE 或 CREATE DATABASE 语句中指定的字母大小写存储在磁盘上,但 MySQL 在查询时将它们转换为小写。名称比较时不区分大小写。

限制

MatrixOne 系统变量 lower_case_table_names 大小写模式暂不支持设置值 2,3 和 4。