自动创建表空间目录解决了人大金仓数据库KingbaseES创建表空间需要提前创建对应的表空间目录否则会创建失败的问题

关键字

KingbaseES、自动创建表空间目录、人大金仓

问题描述

创建表空间,需提前创建对应的表空间目录,否则会创建失败。

问题分析

历史版本中,用户创建表空间,需要提前创建对应的目录,否则创建表空间失败,为了方便用户使用,创建表空间时,若指定的位置不存在,则自动创建对应的表空间目录。

解决方案

1.创建表空间时,若指定的目录不存在,则自动创建。

1)指定的路径需是一个绝对路径。

2)指定的路径不能在data目录下。

3)所指定的路径位置不能有其他表空间。

4)权限:必须为超级用户才能创建表空间。

5)目录属主:创建表空间所指定的目录中已存在的目录需由KingbaseES的操作系统用户拥有。

2.能否自动创建表空间目录受参数auto_createtblspcdir控制,默认开启(on)。若auto_createtblspcdir设置为on,当创建表空间时,若目录不存在,则自动创建,但指定目录中已存在的目录需由KingbaseES的操作系统用户拥有;若auto_createtblspcdir为off时,该目录如果存在(CREATE TABLESPACE 指定的目录不存在则会报错),应该为空并且必须由KingbaseES的操作系统用户拥有。该目录必须用一个绝对路径指定。

3.为解决该问题,用户创建表空间时,若指定的位置不存在,则自动创建对应的表空间目录,特此开发了自动创建表空间目录的特性。

――创建表空间指定的目录存在

\! mkdir -p test/test1/test2/mysp1

create tablespace mysp1 location '/home/zhangjing/dailybuild0904/bin/test/test1/test2/mysp1';

drop tablespace mysp1;

\! rm -rf test

――创建表空间指定的目录存在一部分

\! mkdir -p test/test1

create tablespace mysp1 location '/home/zhangjing/dailybuild0904/bin/test/test1/test2/test3/mysp1';

drop tablespace mysp1;

\! rm -rf test

――创建表空间指定的目录不存在

create tablespace mysp1 location '/home/zhangjing/dailybuild0904/bin/test/test1/test2/test3/test4/test5/test6/test7/mysp1';

――自动创建表空间目录,文件夹名大小写混合,在该表空间中创建数据对象例如表

create tablespace mysp1 location '/home/zhangjing/dailybuild0904/bin/test/test1/test2/TEst3';

create table cc(id int,name varchar(50)) tablespace mysp1;

insert into cc values(1,'xiaozhang'),(2,'xiaozhao'),(3,'xiaohong');

select * from cc;

参考资料

《KingbaseES SQL语言参考手册》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值