我是h2的新手。我只是在hibernate的spring嵌入模式下使用h2。我正在尝试使用h2执行以下脚本。
CREATE TABLE acct_authority (
id bigint(20) NOT NULL auto_increment,
name varchar(255) NOT NULL default '',
value varchar(255) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY name (name)
);
创建表acct_authority时没有任何错误。但是如果我使用以下脚本创建另一个表。
CREATE TABLE acct_role (
id bigint(20) NOT NULL auto_increment,
name varchar(255) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY name (name)
);
它显示错误,因为约束名已经存在。我做了什么错误。
答案 0 :(得分:12)
您尝试创建两个具有相同名称的约束。如您所见,两个CREATE TABLE语句都包含以下内容:
UNIQUE KEY name (name)
结果是第一个创建名为 name 的约束,第二个失败,因为约束 name 已经存在。问题可以通过使用唯一名称来解决。另外一般来说,对数据库对象有更多描述性名称是有意义的。也许您可以使用例如以下内容:
UNIQUE KEY acct_authority_name_UNIQUE (name)
...
UNIQUE KEY acct_role_name_UNIQUE (name)