是否可以在另一台服务器上导入我的数据库?

时间:2016-03-07 16:09:25

标签: mysql linux import foreign-keys export

我正在开发一个放在在线服务器(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

1 个答案:

答案 0 :(得分:0)

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

问题是我试图在Mysql上传我的数据库,这是一个区分大小写的Linux托管的foreign keys。我的Mysql存储在大写字母中,但我的表格不是。

当来自Linux的{{1}}读取文件并尝试在创建表之前删除该表时,该表未被删除,因为该名称与已存储的名称完全相同之前的资本。

解决方案是编辑导出文件并将所有表名从小写更改为大写。