我正在处理一个放在在线服务器(Linux)上的数据库。我不得不对这个数据库做很大的更改,所以我将这个数据库(导出然后导入)移动到我创建的本地数据库(Windows )。
在最后几天在本地数据库上工作之后,我决定工作已经完成,所以我导出了本地数据库并将其导入到活动数据库,但我做不到。它给了我与外键相关的错误:
#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发布于 2016-04-07 07:28:34
我终于找到了它不起作用的原因:
问题是,我试图将我的数据库上传到一个由Linux托管的Mysql上,这是区分大小写的。我的foreign keys存储在大写字母上,但我的桌子却没有。
当Linux的Mysql读取文件并试图在创建表之前删除表时,该表不会被删除,因为该表的名称与之前已经存储在大写中的名称不完全相同。
解决方案是编辑导出文件,并将所有表名从小写改为大写。
https://stackoverflow.com/questions/35848509
复制相似问题