ORA-01435: 用户不存在

P R*_*esh 5 oracle

我正在尝试将在我朋友的笔记本电脑上编码的 SQL 查询运行到我的笔记本电脑上。我已将 .sql 文件导入 SQL Developer 并尝试运行它。但是,我不断收到错误:

01435. 00000 -  "user does not exist"
Run Code Online (Sandbox Code Playgroud)

我列出了所有用户:

select * from all_users;
Run Code Online (Sandbox Code Playgroud)

我得到:

OUTLN                                   9 30-MAR-10 
SYSTEM                                  5 30-MAR-10 
SYS                                     0 30-MAR-10 
Run Code Online (Sandbox Code Playgroud)

其他用户中。我的 SQL 查询是:

  CREATE OR REPLACE TYPE "HOMEWORK1"."INNERTABLE" IS TABLE OF VARCHAR2(128);
Run Code Online (Sandbox Code Playgroud)

我在Win8上使用Oracle 11g。请告诉我是否需要发布其他内容来帮助您。多谢

Ale*_*ole 3

DazzaL 强调了问题的核心,但为了提供更多背景知识,假设您对 Oracle 相当陌生......

语法显示您的create table命令正在尝试创建一个INNERTABLE在 schema 中调用的表HOMEWORK1。模式和用户在 Oracle 中本质上是可以互换的,因此“用户不存在”的错误是指HOMEWORK1模式/用户。除非您已经在数据库中创建了它,否则默认情况下它不会存在。

您可以 (a) 创建HOMEWORK1用户,(b) 更新脚本以替换HOMEWORK1为确实存在的(非内置;见下文)用户,或者 (c) 更新脚本以删除架构引用,这将导致要以您登录的用户身份创建的对象。

但是您登录的身份是需要检查的内容 - 从问题中并不清楚,所以如果您知道这一点并且它与您无关,请道歉。重要的是不要在 Oracle 的内置模式下创建自己的对象,特别是SYS因为SYSTEM您可能会造成很大的损害,并且您不应该定期登录到内置模式 - 仅针对无法登录的特定活动。否则(如关机)。唯一的例外可能是示例HRSCOTT模式,即使如此,从长远来看,使用自己的帐户进行除针对这些帐户的查询之外的任何操作都会更好。

如果这是全新安装,并且您正在登录,SYS因为这就是您可用的全部内容,请创建一个新用户,为其分配相关权限,并在该用户下进行所有进一步的工作。