GBase 8a数据库集群默认表和字段名字只支持字母、数字和下划线。通过设置gcluster_extend_ident参数,可以提供对中文表名和字段名的支持。
参数
gcluster_extend_ident
用来控制是否可以创建中文表名字段、特殊字符的字段。
默认为 0,0 表示不开启,为 1 表示开启。
注:打开 gcluster_extend_ident 参数之后,系统从原来的只能创建字母
数字下划线命名方式,扩展到支持中文和特殊字符,但特殊字符不包括
“‘”,”””,”\”,” . “四个字符。
使用样例
默认创建中文字段或表名,会报ERROR 1711 (HY000): (GBA-02DD-0008) Invalid character string错误。
表一旦创建成功,即使关闭参数,后续也不再受该参数影响。
gbase> create table 人员信息(编号 int, 姓名 varchar(100));
ERROR 1711 (HY000): (GBA-02DD-0008) Invalid character string: '人员信息'
gbase> set gcluster_extend_ident=1;
ERROR 1229 (HY000): Variable 'gcluster_extend_ident' is a GLOBAL variable and should be set with SET GLOBAL
gbase> set global gcluster_extend_ident=1;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)
gbase> create table 人员信息(编号 int, 姓名 varchar(100));
Query OK, 0 rows affected (Elapsed: 00:00:00.73)
gbase> select * from 人员信息;
Empty set (Elapsed: 00:00:00.02)
gbase> insert into 人员信息 values(1,'张三'),(2,'李四');
Query OK, 2 rows affected (Elapsed: 00:00:00.55)
Records: 2 Duplicates: 0 Warnings: 0
gbase> select * from 人员信息;
+--------+--------+
| 编号 | 姓名 |
+--------+--------+
| 1 | 张三 |
| 2 | 李四 |
+--------+--------+
2 rows in set (Elapsed: 00:00:00.02)
gbase> desc 人员信息;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| 编号 | int(11) | YES | | NULL | |
| 姓名 | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
2 rows in set (Elapsed: 00:00:00.01)
gbase> set global gcluster_extend_ident=0;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)
gbase> desc 人员信息;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| 编号 | int(11) | YES | | NULL | |
| 姓名 | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
2 rows in set (Elapsed: 00:00:00.00)
gbase> select * from 人员信息;
+--------+--------+
| 编号 | 姓名 |
+--------+--------+
| 1 | 张三 |
| 2 | 李四 |
+--------+--------+
2 rows in set (Elapsed: 00:00:00.01)
gbase> insert into 人员信息 values(3,'王五'),(4,'赵六');
Query OK, 2 rows affected (Elapsed: 00:00:00.47)
Records: 2 Duplicates: 0 Warnings: 0
gbase> select * from 人员信息;
+--------+--------+
| 编号 | 姓名 |
+--------+--------+
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
| 4 | 赵六 |
+--------+--------+
4 rows in set (Elapsed: 00:00:00.02)
gbase> select * from 人员信息 where 姓名='张三';
+--------+--------+
| 编号 | 姓名 |
+--------+--------+
| 1 | 张三 |
+--------+--------+
1 row in set (Elapsed: 00:00:00.01)