【发布时间】:2016-03-07 16:09:25
【问题描述】:
我正在研究放置在在线服务器 (Linux) 上的数据库。我不得不对这个数据库做很大的改变,所以我把这个数据库移动(通过导出然后导入)到我创建的本地数据库(Windows Server)。
最后几天在本地数据库上工作后,我认为工作已经完成,所以我导出本地数据库并将其导入到实时数据库,但我不能。它给了我与外键相关的错误:
#1215 - 无法添加外键约束
表phpmyadmin 说有一些错误的是printprices,这些是我为printprices 和其他可能与错误有关的表:
CREATE TABLE `printprices` (
`STYLE` int(11) NOT NULL DEFAULT '0',
`DIFICULTAD` int(11) NOT NULL DEFAULT '0',
`NCOLORES` int(11) NOT NULL DEFAULT '0',
`PROVEEDOR` int(11) NOT NULL DEFAULT '0',
`SIZECM2MAX` int(11) NOT NULL DEFAULT '0',
`MINQ` int(11) NOT NULL,
`MAXQ` int(11) NOT NULL,
`PRECIO` decimal(5,2) DEFAULT '0.00',
`PRECIOPRV` decimal(5,2) DEFAULT '0.00',
`MINWORK` decimal(5,2) DEFAULT '0.00',
`MINWORKPRV` decimal(5,2) DEFAULT '0.00',
PRIMARY KEY (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`,`SIZECM2MAX`,`MINQ`),
KEY `FK_PRINT` (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`),
CONSTRAINT `FK_PRINT` FOREIGN KEY (`STYLE`, `DIFICULTAD`, `NCOLORES`, `PROVEEDOR`) REFERENCES `print` (`STYLE`, `DIFICULTAD`, `NCOLORES`, `PROVEEDOR`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `print` (
`STYLE` int(11) NOT NULL DEFAULT '0',
`DIFICULTAD` int(11) NOT NULL DEFAULT '0',
`NCOLORES` int(11) NOT NULL DEFAULT '0',
`PROVEEDOR` int(11) NOT NULL DEFAULT '0',
`CFC` decimal(5,2) DEFAULT '0.00',
PRIMARY KEY (`STYLE`,`DIFICULTAD`,`NCOLORES`,`PROVEEDOR`),
KEY `FK_PRINTPROV` (`PROVEEDOR`),
KEY `FK_PRINTSTYLE` (`STYLE`),
CONSTRAINT `FK_PRINTPROV` FOREIGN KEY (`PROVEEDOR`) REFERENCES `proveedores` (`CODIPRV`) ON DELETE CASCADE,
CONSTRAINT `FK_PRINTSTYLE` FOREIGN KEY (`STYLE`) REFERENCES `printstyle` (`CODISTY`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `printstyle` (
`CODISTY` int(11) NOT NULL AUTO_INCREMENT,
`STYLE` varchar(30) DEFAULT NULL,
PRIMARY KEY (`CODISTY`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1
CREATE TABLE `proveedores` (
`CODIPRV` int(11) NOT NULL AUTO_INCREMENT,
`PROVEEDOR` varchar(20) DEFAULT NULL,
`ENVIOPRICE` decimal(4,2) NOT NULL DEFAULT '0.00',
`CARTONPRICE` decimal(4,2) NOT NULL DEFAULT '0.00',
`LIMITPRICE` decimal(6,2) NOT NULL,
PRIMARY KEY (`CODIPRV`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
【问题讨论】:
-
运行命令“SHOW ENGINE INNODB STATUS”并检查“LATEST FOREIGN KEY ERROR”字段,报告您在那里看到的内容。它可以帮助您或我们识别问题!
-
我很迷茫,我从来没有这样做过。
-
在您的 phpmyadmin 界面中,转到“SQL”选项卡并写入“SHOW ENGINE INNODB STATUS”。然后单击“选项”并选中“全文”选项。最后点击“GO”。如果您尝试在同一个会话中导入表,但出现“1215”错误,则会出现“最新外键错误”字段,该字段将提供有关该错误的更多信息。
-
看来我没有访问权限,也没有找到在哪里可以获得权限。
#1227 - Access denied; you need (at least one of) the PROCESS privilege(s) for this operation -
你必须以 root 用户身份登录 mysql,我的印象是你有那种权限(因为你可以导出/导入数据库)
标签: mysql linux import foreign-keys export