导入 mysql 时无法创建 table(错误号:121) workbench 仅在 Linux 上导出转储
Can't create table (errno:121) when importing mysql workbench export dump only on Linux
我通过在 Windows 机器上使用 MySQL Workbench 导出我的 tables 创建了一个 .sql 转储文件。如果我尝试在 Windows 上再次导入该文件,一切正常。如果我尝试使用 mysql -u user -p TABLE < dumpfile.sql
导入该文件,我会收到 Can't create table (errno:121)
错误。
最初的 table 是由 Hibernate 创建的。导致问题的 table 是这种多对多关系:
CREATE TABLE USER_ITEM (
USERID int(11) NOT NULL,
ITEMID int(11) NOT NULL,
PRIMARY KEY (USERID,ITEMID),
KEY FK_7ykraq12rrlicwxhjfs13re56 (ITEMID),
CONSTRAINT FK_7ykraq12rrlicwxhjfs13re56 FOREIGN KEY (ITEMID) REFERENCES item (ID),
CONSTRAINT FK_c8pcrsn7fey94ipgiy12g3d4e FOREIGN KEY (USERID) REFERENCES user (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Hibernate 和 Workbench 似乎在 ITEMID 上创建了一个索引,它与我的第一个约束具有相同的外键。为什么?为什么只在使用 MySQL workbench 在 Linux 上导入转储文件而不是在 Windows 上导入转储文件时才导致这个问题?我可以重命名第一个约束的外键吗?
看来我的数据库有问题。重新创建它解决了这个问题。
我通过在 Windows 机器上使用 MySQL Workbench 导出我的 tables 创建了一个 .sql 转储文件。如果我尝试在 Windows 上再次导入该文件,一切正常。如果我尝试使用 mysql -u user -p TABLE < dumpfile.sql
导入该文件,我会收到 Can't create table (errno:121)
错误。
最初的 table 是由 Hibernate 创建的。导致问题的 table 是这种多对多关系:
CREATE TABLE USER_ITEM (
USERID int(11) NOT NULL,
ITEMID int(11) NOT NULL,
PRIMARY KEY (USERID,ITEMID),
KEY FK_7ykraq12rrlicwxhjfs13re56 (ITEMID),
CONSTRAINT FK_7ykraq12rrlicwxhjfs13re56 FOREIGN KEY (ITEMID) REFERENCES item (ID),
CONSTRAINT FK_c8pcrsn7fey94ipgiy12g3d4e FOREIGN KEY (USERID) REFERENCES user (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Hibernate 和 Workbench 似乎在 ITEMID 上创建了一个索引,它与我的第一个约束具有相同的外键。为什么?为什么只在使用 MySQL workbench 在 Linux 上导入转储文件而不是在 Windows 上导入转储文件时才导致这个问题?我可以重命名第一个约束的外键吗?
看来我的数据库有问题。重新创建它解决了这个问题。