我有一个数据库,我使用--no-data
. 我正在尝试将该数据库结构导入一个空数据库中。
在我尝试执行的查询之后,我忽略了其他查询,
set foreign_key_checks=0;
DROP TABLE IF EXISTS `ACTIVITY`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ACTIVITY` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
...
`ACTIVITY_BY_ID` int(11) DEFAULT NULL,
`ENTITY_TYPE` varchar(45) COLLATE utf8_unicode_ci NOT NULL, -- this
`ACTIVITY_TYPE` varchar(45) CHARACTER SET utf8 NOT NULL, -- this
...
PRIMARY KEY (`ID`),
KEY `FK_ACTIVITY_TO_USER_idx` (`ACTIVITY_BY_ID`),
FULLTEXT KEY `FK_FULL_TEXT_ACTIVITY_TYPE` (`ACTIVITY_TYPE`),
FULLTEXT KEY `FK_FULL_TEXT_ENTITY_TYPE` (`ENTITY_TYPE`),
...
CONSTRAINT `FK_ACTIVITY_TO_USER` FOREIGN KEY (`ACTIVITY_BY_ID`) REFERENCES `USER` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
上面的代码失败说Error Code: 1215. Cannot add foreign key constraint
它应该在 foreign_key_checks 设置为 0 时工作。
下面是导入USER
表的sql。但是,此 sql 稍后将执行。
DROP TABLE IF EXISTS `USER`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `USER` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`ID`),
..
) ENGINE=InnoDB AUTO_INCREMENT=4070 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
如果我先执行USER
脚本然后ACTIVITY
,它可以工作,否则它不会。
--this
我为表格标记的行ACTIVITY
导致了问题。如果我删除这两行,代码就可以正常工作。
为什么全文索引会创建外键问题?