2016-03-07 69 views
0

我正在处理放在在线服务器(Linux)上的数据库。我不得不对这个数据库做很大的修改,所以我把这个数据库移动到了我创建的本地数据库(Windows Server)。是否可以在另一台服务器上导入我的数据库?

这最后的日子工作在本地数据库中后,我决定,这项工作已经完成,所以我导出的本地数据库并将其导入到活的,但我不能。它给了我与外键错误:

#1215 - Cannot add foreign key constraint

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 
+0

运行命令“SHOW ENGINE INNODB STATUS”并检查“国外最新KEY ERROR”领域,报告可以看到有什么。它可能会帮助你或我们发现问题! – Sevle

+0

我很迷茫,我从来没有这样做过。 – danibg

+0

在您的phpmyadmin界面中,转至“SQL”选项卡并编写“SHOW ENGINE INNODB STATUS”。然后点击“选项”并选中“全文”选项。最后点击“GO”。如果您尝试在同一会话中导入表格,并且出现'1215'错误,则会出现“最新的外键错误”字段,该字段将提供有关该错误的更多信息。 – Sevle

回答

0

我终于找到了为什么它不工作:

的问题是,我试图上传我的数据库上Mysql,使用Linux,这是主办区分大小写。我的foreign keys以大写字母存储,但我的表格不是。

当Linux的Mysql读取该文件并在创建表之前试图删除表时,该表并未被删除,因为该名称与之前已存储在名称中的名称不完全相同。

的解决方案是编辑的导出文件,并且从低的情况下改变所有的表名资本。

相关问题