【问题标题】:Unable to drop Table Oracle无法删除表 Oracle
【发布时间】:2021-01-18 00:40:49
【问题描述】:

我无法从我的数据库中删除表。

对于查询 select owner from ALL_TABLES where TABLE_NAME ='db_schema_version';,我看到的结果是 OWNER_FC

对于查询show user;,我看到结果 USER 是“OWNER_FC”

但是当我尝试使用查询 drop table db_schema_version cascade constraints; 删除表时,我收到以下错误:

drop table db_schema_version cascade constraints
Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

既然我是店主,我不明白为什么我不能放下桌子? 我认为这个表是由Flyway 创建的,但我不确定这是否是这里的相关信息

【问题讨论】:

  • 如果where TABLE_NAME ='db_schema_version' 确实返回了一些东西,那么你需要drop table "db_schema_version"; - db_schema_version"db_schema_version" 的名称不同
  • 我尝试使用双引号并得到同样的错误。我认为查询语法不是问题,因为我能够删除其他表。只有这张桌子有问题
  • 您在第一条评论中链接到的答案仅适用于大写表名。如果表名是小写的(或者以数字开头或者是关键字),那么它将失败,您需要在区分大小写的标识符周围使用双引号(根据该链接问题中接受的答案)。

标签: oracle11g flyway


【解决方案1】:

查询

select owner from ALL_TABLES where TABLE_NAME ='db_schema_version';

我看到的结果是OWNER_FC

数据字典中的表名是小写的。这意味着您需要在查询中以小写形式提供表名,您需要将其括在双引号中,并且您可能需要指定架构:

DROP TABLE "db_schema_version" CASCADE CONSTRAINTS;

DROP TABLE OWNER_FC."db_schema_version" CASCADE CONSTRAINTS;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2023-03-21
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多