尝试执行CREATE TABLE sql命令时,Netbeans发出错误代码-1,SQL状态42Z93

时间:2012-03-26 17:08:45

标签: java sql netbeans derby javadb

这是我尝试执行的内容:

CREATE TABLE "order" (
    "o_id" INTEGER not null primary key,
    "c_id" INTEGER,
    PRIMARY KEY (o_id),
    FOREIGN KEY (c_id) REFERENCES customer(c_id)
);

执行上述SQL命令时出现此错误:

  

错误代码-1,SQL状态42Z93:约束'SQL120326130633321'和   'SQL120326130633320'具有相同的列集,但不是   允许的。

在上面的SQL命令之前我执行了这个:

CREATE TABLE "customer" (
    "c_id" INTEGER not null primary key,
    "c_first" VARCHAR(30),
    "c_last" VARCHAR(30)
);

修改(溶液):

我想我修好了。

首先,我必须删除PRIMARY KEY(o_id),因为它基本上重复了我在SQL命令o_id INTEGER not null primary key的第2行上键入的内容,所以它抱怨我试图为同一列创建两次主键。 / p>

其次,在此之后修复了另一个错误,告诉我无法找到CUSTOMER表。也许问题是当CREATE TABLE试图执行时,我在表名'customer'周围使用了逗号(“...”)。

我删除了'customer'表并在不使用SQL命令中的任何引号的情况下重新创建它。

之后我为'订单'执行'CREATE TABLE'并且它有效。

奇怪的是,当我在SQL中使用客户表名称周围的引号时,首先,它的名称在Netbeans的Databases Explorer中显示为全部小写。但是当我省略引号时,表名变成全部大写 - 甚至是列名。

1 个答案:

答案 0 :(得分:1)

您要添加两次主键约束。您只需要在一个地方或另一个地方需要它,具体取决于数据库供应商。