当前位置: 首页 > 面试题库 >

java.sql.SQLSyntaxErrorException:ORA-00955:名称已被现有对象使用

岳玉书
2023-03-14
问题内容

我正在使用Oracle 11g R2,我想创建一些用户表。当我运行查询。它创建几个表并产生
java.sql.SQLSyntaxErrorException:ORA-00955:现有对象 Exception 已使用该名称

    Connection con=prepareConnection();
    Statement st=con.createStatement();
    StringBuilder sb=new StringBuilder(1024);
    sb.append("create table ").append(uname).append("(MESSAGES CLOB,LINKS VARCHAR2(150),FRIENDS VARCHAR2(50),COMMENTS CLOB,LIKES VARCHAR2(10),UNLIKES VARCHAR2(10),SHARES BLOB,QSTNS CLOB,ANS CLOB,UPDATES BLOB,THEMS VARCHAR2(100),WORDS CLOB,NOTIFICATION CLOB,REQUESTS VARCHAR2(100),TIPS CLOB,TAG VARCHAR2(50))");
    String Query=sb.toString();
    st.executeUpdate(Query);

    Statement st1=con.createStatement();
    StringBuilder sb1=new StringBuilder(1024);
    sb1.append("create table ").append(uname).append("VIALBUM(ALBUMID NUMBER NOT NULL, ALBUMNAME VARCHAR2(225) NOT NULL, CONSTRAINT ").append(uname).append("VIALBUM_PK PRIMARY KEY(ALBUMID)ENABLE)");
    String Query1=sb1.toString();
    st1.executeUpdate(Query1);

    Statement st12=con.createStatement();
    StringBuilder sb12=new StringBuilder(1024);
    sb12.append("CREATE INDEX ").append(uname).append("VIALBUM_INDEX ON ").append(uname).append("VIALBUM(ALBUMNAME)");
    String Query12=sb12.toString();
    st12.executeUpdate(Query12);

    Statement st11=con.createStatement();
    StringBuilder sb11=new StringBuilder(1024);
    sb11.append("create table ").append(uname).append("VIDEO(VIDEOID NUMBER NOT NULL, VIDEONAME VARCHAR2(225) NOT NULL, VIDEOFULL BLOB NOT NULL, VIDEODISC VARCHAR2(225), ALBUMID NUMBER NOT NULL, CONSTRAINT ").append(uname).append("VIDEO_PK PRIMARY KEY(VIDEOID)ENABLE)");
    String Query11=sb11.toString();
    st11.executeUpdate(Query11);

    Statement st13=con.createStatement();
    StringBuilder sb13=new StringBuilder(1024);
    sb13.append("ALTER TABLE ").append(uname).append("VIDEO ADD CONSTRAINT ").append(uname).append("VIDEO_").append(uname).append("VIALBUM_FK1 FOREIGN KEY(ALBUMID)REFERENCES ").append(uname).append("VIALBUM(ALBUMID)ENABLE");
    String Query13=sb13.toString();
    st13.executeUpdate(Query13);

    Statement st14=con.createStatement();
    StringBuilder sb14=new StringBuilder(1024);
    sb14.append("CREATE INDEX ").append(uname).append("VIDEO_INDEX ON ").append(uname).append("VIDEO (VIDEONAME)");
    String Query14=sb14.toString();
    st14.executeUpdate(Query14);

    Statement st2=con.createStatement();
    StringBuilder sb2=new StringBuilder(1024);
    sb2.append("create table ").append(uname).append("ALBUM(ALBUMID NUMBER NOT NULL, ALBUMNAME VARCHAR2(225) NOT NULL, CONSTRAINT ").append(uname).append("ALBUM_PK PRIMARY KEY(ALBUMID)ENABLE)");
    String Query2=sb2.toString();
    st2.executeUpdate(Query2);

    Statement st22=con.createStatement();
    StringBuilder sb22=new StringBuilder(1024);
    sb22.append("CREATE INDEX ").append(uname).append("ALBUM_INDEX ON ").append(uname).append("ALBUM(ALBUMNAME)");
    String Query22=sb22.toString();
    st22.executeUpdate(Query22);

直到上面的语句,它才能正确执行。其余的语句不会执行,它会引发异常。

    Statement st21=con.createStatement();
    StringBuilder sb21=new StringBuilder(1024);
    sb21.append("create table ").append(uname).append("IMAGE(IMAGEID NUMBER NOT NULL, IMAGENAME VARCHAR2(225) NOT NULL, IMAGEFULL BLOB NOT NULL, IMAGEDISC VARCHAR2(225), ALBUMID NUMBER NOT NULL, CONSTRAINT ").append(uname).append("IMAGE_PK PRIMARY KEY(IMAGEID)ENABLE)");
    String Query21=sb11.toString();
    st21.executeUpdate(Query21);

    Statement st23=con.createStatement();
    StringBuilder sb23=new StringBuilder(1024);
    sb23.append("ALTER TABLE ").append(uname).append("IMAGE ADD CONSTRAINT ").append(uname).append("IMAGE_").append(uname).append("ALBUM_FK1 FOREIGN KEY(ALBUMID)REFERENCES ").append(uname).append("ALBUM(ALBUMID)ENABLE");
    String Query23=sb23.toString();
    st23.executeUpdate(Query23);

    Statement st24=con.createStatement();
    StringBuilder sb24=new StringBuilder(1024);
    sb24.append("CREATE INDEX ").append(uname).append("IMAGE_INDEX ON ").append(uname).append("IMAGE (IMAGENAME)");
    String Query24=sb24.toString();
    st24.executeUpdate(Query24);

    Statement st3=con.createStatement();
    StringBuilder sb3=new StringBuilder(1024);
    sb3.append("create table ").append(uname).append("MUALBUM(ALBUMID NUMBER NOT NULL, ALBUMNAME VARCHAR2(225) NOT NULL, CONSTRAINT ").append(uname).append("MUALBUM_PK PRIMARY KEY(ALBUMID)ENABLE)");
    String Query3=sb3.toString();
    st3.executeUpdate(Query3);

    Statement st32=con.createStatement();
    StringBuilder sb32=new StringBuilder(1024);
    sb32.append("CREATE INDEX ").append(uname).append("MUALBUM_INDEX ON ").append(uname).append("MUALBUM(ALBUMNAME)");
    String Query32=sb12.toString();
    st32.executeUpdate(Query32);

    Statement st31=con.createStatement();
    StringBuilder sb31=new StringBuilder(1024);
    sb31.append("create table ").append(uname).append("SONG(SONGID NUMBER NOT NULL, SONGNAME VARCHAR2(225) NOT NULL, SONGFULL BLOB NOT NULL, SONGDISC VARCHAR2(225), ALBUMID NUMBER NOT NULL, CONSTRAINT ").append(uname).append("SONG_PK PRIMARY KEY(SONGID)ENABLE)");
    String Query31=sb31.toString();
    st31.executeUpdate(Query31);

    Statement st33=con.createStatement();
    StringBuilder sb33=new StringBuilder(1024);
    sb33.append("ALTER TABLE ").append(uname).append("SONG ADD CONSTRAINT ").append(uname).append("SONG_").append(uname).append("ALBUM_FK1 FOREIGN KEY(ALBUMID)REFERENCES ").append(uname).append("ALBUM(ALBUMID)ENABLE");
    String Query33=sb33.toString();
    st33.executeUpdate(Query33);

    Statement st34=con.createStatement();
    StringBuilder sb34=new StringBuilder(1024);
    sb34.append("CREATE INDEX ").append(uname).append("SONG_INDEX ON ").append(uname).append("SONG (SONGNAME)");
    String Query34=sb34.toString();
    st34.executeUpdate(Query34);

请任何人告诉我此错误说明了什么。


问题答案:

听起来您正在尝试创建一个名称与另一个名称相同的对象,例如表或约束,字段等。

您似乎在这里尝试两次创建相同的表:

String Query21=sb11.toString();


 类似资料:
  • 问题内容: 我有我正在尝试编译并收到错误的函数。我真的不知道此错误,并尝试搜索此问题,但未找到任何解决方案。我不知道这与任何授予特权有关,但是我的架构表没有特权问题。 问题答案: 您可能有另一个具有相同名称()的对象。 您可以通过查询找到它: 然后将其删除(由上面的查询替换为对象的类型):

  • 问题内容: 我正在尝试像这样使用AngularJS和UI Bootstrap 设置: .html .js 目前,我已经能够使用所选名称更新模型,但是我的目标是通过传递整个对象。有一种干净的方法可以仅使用输入来执行此操作吗? 问题答案: 当然可以:-) 从预输入指令http://angular-ui.github.io/bootstrap/使用作为AngularJS相同的超灵活的语法选择指令进行。所

  • 问题内容: 我正在尝试找出对javascript对象的属性名称有效的内容。例如 b [‘-^ colour’]无效,但在所有浏览器中都存在古怪的现象,我不应该相信它会继续向前发展 b [‘-^ colour’]是完全有效的,但它的形式只能以这种方式访问​​-(受支持,所以对象也许可以用作地图?) 还有别的 顺便说一句,在javascript中,全局变量可能在顶层声明为 但也可以(据我所知)与 以下

  • 问题内容: 我想使用变量的值来访问对象。 假设我有一个名为myobject的对象。 我想用此名称填充变量,然后使用该变量访问对象。 例: 问题答案: 全球: 全球:v2 本地:v1 本地:v2

  • 问题内容: 我有带有“ operation.date”,“ operation.name”等列的mysql表。用我获取该表数据作为对象后,得到此信息(行的print_r): 我怎么存取权限,并和所有其他古怪的命名对象的属性? 问题答案: 在您的SQL查询中指定别名,例如 或访问这些属性, 或将对象强制转换为数组,如下所示:。

  • 我有一个超文本标记语言的小项目。构建超文本标记语言的脚本如下: 使用$summe,我计算目录中有多少PDF,以便在以后的Nginx上显示它们。在本例中,我有3个PDF,然后内容片段将在我的HTML中设置3次。现在我的问题是PDF的名称不同,我不知道如何使用SED正确更改它们。 内容片段: 我希望这是足够的信息,为我的英语不好感到抱歉,我还在学习。