【问题标题】:Is it possible to import my database on another server?是否可以在另一台服务器上导入我的数据库?
【发布时间】: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


【解决方案1】:

我终于知道为什么它不起作用了:

问题是我试图将我的数据库上传到由 Linux 托管的 Mysql 上,它区分大小写。我的foreign keys 以大写字母存储,但我的表不是。

当来自 Linux 的Mysql 读取文件并尝试在创建表之前删除表时,该表没有被删除,因为名称与之前存储在大写字母中的名称不完全相同。

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

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2011-03-18
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多