我有一个全新的 Oracle Express 11g 实例。我正在尝试在默认数据库(xe)中创建一个带有表和视图的新模式。
我的脚本是:
create user XAuthority identified by mysecret;
alter session set current_schema = XAuthority;
create schema authorization XAuthority
create table CUSTOMER ( ID int, CUSTOMER text)
create view CUSTOMER_VIEW as select * from CUSTOMER
grant select on CUSTOMER_VIEW to xareadonly;
但我收到一个错误:
SQL 错误:ORA-02421:架构授权标识符 02421 缺失或无效。00000 - “架构授权标识符缺失或无效”
*原因:创建模式语句的授权子句中模式名称丢失或不正确。
*操作:如果名称存在,它必须与当前架构相同。
我熟悉 Postgres 和 MySql,但 Oracle 似乎完全不同。谁能告诉我这里有什么问题?
那么你有多个问题。首先,您需要为
CREATE SESSION
新创建的用户授予系统权限。其次,您的数据类型在 Oracle 中不兼容(int
应转换为和number
)。text
varchar2
为了使用
CREATE SCHEMA
语句,您需要以您在语句中指定的用户身份连接到数据库。问题是您没有
xauthority
通过更改会话连接到数据库。用户应该是
xauthority
,但它仍然是SYS
。您需要
create session
系统权限才能连接到数据库。您需要表空间配额来创建模式对象,例如表。