请教:为什么建立长字段的数据库表出错

时间:2022-06-01 12:49:45
我在建表时,有两个字段的长度为5024,建表报错:
DB21034E  The command was processed as an SQL statement because it was not a
valid Command Line Processor command.  During SQL processing it returned:
SQL0286N  A default table space could not be found with a page size of at
least "16384" that authorization ID "UP070427" is authorized to use.
SQLSTATE=42727

好像与表空间有关,我只是简单用“create database”创建了数据库,没有建表空间

6 个解决方案

#1


先创建32K 的bufferpool
create bufferpool pool32k size 100 pagesize 32k;

然后在32K 的bufferpool 上创建32k 的TABLESPACE
CREATE TABLESPACE tbspace32k PAGESIZE 32 K  MANAGED BY DATABASE  USING ( FILE 'C:\DB2\tbspace32k' 5120 ) 
EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL  pool32k;

最后在32k 的TABLESPACE 上创建表
create table test2 (id varchar(32670)) in tbspace32k;

#2


多谢,多谢!
但是有一个问题,我是AIX下的DB2数据库,用db2inst1用户这样创建表可以,
但是用我自己的用户则不能创建数据库以及表空间。
用db2inst1用户创建数据库和表空间后,再用我自己的用户(操作系统创建)创建表则失败,
我自己的用户创建表空间和数据库则提示没有权限。
我想请问如何授权其他用户创建数据库和表空间。

#3


你自己的用户,其实就是系统的用户,不过不知道你是否给这个用户付权限了?

你可以在这个用户权限下的空间里建立表空间和数据库(在创建的时候可以指定)

#4


可以将表空间授权给你的用户就行了

grant use of tablespace [table_space_name] to public

#5


有点难度哦

#6


我也想知道,正在找這方面的資料~~~~~

#1


先创建32K 的bufferpool
create bufferpool pool32k size 100 pagesize 32k;

然后在32K 的bufferpool 上创建32k 的TABLESPACE
CREATE TABLESPACE tbspace32k PAGESIZE 32 K  MANAGED BY DATABASE  USING ( FILE 'C:\DB2\tbspace32k' 5120 ) 
EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL  pool32k;

最后在32k 的TABLESPACE 上创建表
create table test2 (id varchar(32670)) in tbspace32k;

#2


多谢,多谢!
但是有一个问题,我是AIX下的DB2数据库,用db2inst1用户这样创建表可以,
但是用我自己的用户则不能创建数据库以及表空间。
用db2inst1用户创建数据库和表空间后,再用我自己的用户(操作系统创建)创建表则失败,
我自己的用户创建表空间和数据库则提示没有权限。
我想请问如何授权其他用户创建数据库和表空间。

#3


你自己的用户,其实就是系统的用户,不过不知道你是否给这个用户付权限了?

你可以在这个用户权限下的空间里建立表空间和数据库(在创建的时候可以指定)

#4


可以将表空间授权给你的用户就行了

grant use of tablespace [table_space_name] to public

#5


有点难度哦

#6


我也想知道,正在找這方面的資料~~~~~