返回信息流下面的这段SQL语句是备份mysql的时候,它自动生成的。
现在我打算导入到其他的机器上,但是报错。
说是红色的地方的key重复出现了。
完全不明白什么意思,谁帮忙指点一下吧。
DROP TABLE IF EXISTS `paratask`;
CREATE TABLE `paratask` (
`TaskId` bigint(20) unsigned NOT NULL auto_increment,
PRIMARY KEY (`TaskId`)
) ENGINE=InnoDB AUTO_INCREMENT=426 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `fixedtimetestrecord`;
CREATE TABLE `fixedtimetestrecord` (
`recordId` int(10) unsigned NOT NULL auto_increment,
`taskId` bigint(20) unsigned NOT NULL default '0',
`phoneIMSI` bigint(20) unsigned NOT NULL default '0',
`startTime` datetime NOT NULL,
PRIMARY KEY USING BTREE (`recordId`),
KEY `FK_FixedTimeTestRecord_1` USING BTREE (`taskId`),
CONSTRAINT `FK_FixedTimeTestRecord_1` FOREIGN KEY (`TaskId`) REFERENCES `paratask` (`TaskId`) ON DELETE CASCADE ON UPDATE CASCADE,
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
这是一条镜像帖。来源:北邮人论坛 / soft-design / #30108同步于 2008/9/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[求助]数据库的SQL导入有问题
ericyosho
2008/9/19镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
The server has returned this error message:Duplicate key name 'FK_FixedTimeTestRecord_1'
MySQL Error.
意思是说key重复么?
CREATE TABLE `fixedtimetestrecord` (
`recordId` int(10) unsigned NOT NULL auto_increment,
`taskId` bigint(20) unsigned NOT NULL default '0',
`phoneIMSI` bigint(20) unsigned NOT NULL default '0',
`startTime` datetime NOT NULL,
PRIMARY KEY USING BTREE (`recordId`),
KEY `FK_FixedTimeTestRecord_1` USING BTREE (`taskId`),
CONSTRAINT `FK_FixedTimeTestRecord_2` FOREIGN KEY (`TaskId`) REFERENCES `paratask` (`TaskId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
InnoDB也支持外键约束。InnoDB中对外键约束定义的语法看起来如下:
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
外键定义服从下列情况:
· 所有tables必须是InnoDB型,它们不能是临时表。
· 在引用表中,必须有一个索引,外键列以同样的顺序被列在其中作为第一列。这样一个索引如果不存在,它必须在引用表里被自动创建。
· 在引用表中,必须有一个索引,被引用的列以同样的顺序被列在其中作为第一列。
· 不支持对外键列的索引前缀。这样的后果之一是BLOB和TEXT列不被包括在一个外键中,这是因为对这些列的索引必须总是包含一个前缀长度。
· 如果CONSTRAINTsymbol被给出,它在数据库里必须是唯一的。如果它没有被给出,InnoDB自动创建这个名字。
【 在 coolfantasy (Cool) 的大作中提到: 】
: CREATE TABLE `fixedtimetestrecord` (
: `recordId` int(10) unsigned NOT NULL auto_increment,
: `taskId` bigint(20) unsigned NOT NULL default '0',
: ...................
原意好像是要在fixedtimerecord那个表里面,引入paratask表中的TaskId一列作为外键。
而这个外键的名字,好像要把TaskId,换成taskId。
我现在严重怀疑,这句话到底什么有没有意义。
KEY `FK_FixedTimeTestRecord_1` USING BTREE (`taskId`),
有意义 没意义的是CONSTRAINT xxxx
【 在 ericyosho (ericyosho) 的大作中提到: 】
: 原意好像是要在fixedtimerecord那个表里面,引入paratask表中的TaskId一列作为外键。
: 而这个外键的名字,好像要把TaskId,换成taskId。
: 我现在严重怀疑,这句话到底什么有没有意义。
: ...................