2016-03-07 68 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讀取該文件並在創建表之前試圖刪除表時,該表並未被刪除,因爲該名稱與之前已存儲在名稱中的名稱不完全相同。

的解決方案是編輯的導出文件,並且從低的情況下改變所有的表名資本。

相關問題