大小写兼容
在PG中大小写是不敏感的,而MySQL则大小写敏感。为了兼容MySQL的大小写,瀚高数据库管理系统V9.0采用了两个GUC参数:
mysql.enable_case_switch:大小写的总开关。在开启该参数的情况下,MySQL大小写开启,关闭的情况下,MySQL大小写关闭,保持PG原生的功能不变;
lower_case_table_names:MySQL大小写参数。该参数决定使用哪种大小写方式。
功能
以下是MySQL大小写兼容的主要功能:
| lower_case_table_names表名 | 0 | 1 | 2 |
|---|---|---|---|
| 库名1、MySQL对应的为pg的模式名。2、真正的库名不受参数控制,创建的名字是什么,存储和使用时都应该是什么。) | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 | 存储:转为小写,不能有同名的。 使用:不区分大小写。 | 存储:输入什么就是什么,linux可同名,Windows不可同名。 使用:linux严格区分大小写,Windows不区分大小写。 |
| 模式名(在MySQL中与库一致) | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 | 存储:转为小写,不能有同名的。 使用:不区分大小写。 | 存储:输入什么就是什么,linux可同名Windows不可同名。 使用:linux严格区分大小写,Windows不区分大小写。 |
| 表/视图名/别名/SEQ | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 | 存储:转为小写,不能有同名的 使用:不区分大小写。 | 存储:输入什么就是什么,linux可同名Windows不可同名。 使用:linux严格区分大小写,Windows不区分大小写。 |
| 列名 | 存储:输入什么就是什么,不能有同名的。使用:不区分大小写。 | 存储:输入什么就是什么,不能有同名的。 使用:不区分大小写。 | 存储:输入什么就是什么,不能有同名的。 使用:不区分大小写。 |
| 用户名 | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 | 存储:输入什么就是什么,可同名。 使用:严格区分大小写。 |
| 函数/过程 | 存储:输入什么就是什么,不可同名。 使用:不区分大小写。 | 存储:输入什么就是什么,不可同名。 使用:不区分大小写。 | 存储:输入什么就是什么,不可同名。 使用:不区分大小写。 |
| LANGUAGE | 使用:转小写。 | 使用:转小写。 | 使用:转小写。 |
示例
highgo=# show mysql.enable_case_switch;
mysql.enable_case_switch
--------------------------
on
(1 row)
highgo=# show lower_case_table_names;
lower_case_table_names
------------------------
0
(1 row)
highgo=# create database DB;
CREATE SCHEMA
highgo=# create database Db;
CREATE SCHEMA
highgo=# create database dB;
CREATE SCHEMA
highgo=# create database db;
CREATE SCHEMA
highgo=# use DB;
SET
highgo=# create table t1(c binary);
CREATE TABLE
highgo=# \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+--------
DB | t1 | table | highgo
(1 row)
highgo=# use Db;
SET
highgo=# \d
Did not find any relations.