Skip to content

lower_case_table_names 大小写敏感支持

lower_case_table_names 是 MatrixOne 设置库表名大小写是否敏感的一个全局变量。

Note

与 mysql 不同的是,MatrixOne 暂时只支持 01 两种模式,且在 linux 和 mac 系统下默认值都为 1。

查看 lower_case_table_names

在 MatrixOne 中使用以下命令查看 lower_case_table_names

show variables like "lower_case_table_names";--默认为 1

设置 lower_case_table_names

在 MatrixOne 中使用以下命令设置 lower_case_table_names

set global lower_case_table_names = 0;--默认为 1,重新连接数据库生效

参数解释

参数设置为 0

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

示例

mysql> show variables like "lower_case_table_names";--查看默认参数,默认值为 1
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.00 sec)

set global lower_case_table_names = 0;--重新连接数据库生效

mysql> show variables like "lower_case_table_names";--重连数据库查看参数,修改成功
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 0     |
+------------------------+-------+
1 row in set (0.00 sec)

mysql> use DB1;--库名大小写敏感
ERROR 1049 (HY000): invalid database DB1

mysql> use db1;
Database changed

create table Tt (Aa int);
mysql> insert into tt values (1,2), (2,3), (3,4);--表名大小写敏感
ERROR 1146 (HY000): no such table db1.tt

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;--重新连接数据库生效

mysql> show variables like "lower_case_table_names";--重连数据库查看参数,修改成功
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.00 sec)

mysql> use DB1;--库名大小写不敏感
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

create table Tt (Aa int,Bb int);
insert into tt values (1,2), (2,3), (3,4);--表名大小写不敏感

mysql> select Aa from Tt;--名称比较大小写不敏感
+------+
| aa   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.03 sec)

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