我使用mysqldump - uroot -p pagesjaunes > E:\db.sql
复制我的数据库
但是当我尝试在家用电脑中执行mysql pagesjaunes < db.sql
时出现错误,因为mysqldump
没有将正确顺序的表放在文件db.sql
中,没有外键的表必须是第一个例如。
DROP TABLE IF EXISTS `fonction`;
CREATE TABLE `fonction` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(20) NOT NULL,
`id_qualite` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fonction_qualite_fk` (`id_qualite`),
CONSTRAINT `fonction_qualite_fk` FOREIGN KEY (`id_qualite`) REFERENCES `qualite` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `qualite`;
CREATE TABLE `qualite` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
我必须首先放置qualite
表并且它有效,但我有很多表,并且会有很多手动订购。
那我怎么办呢?
答案 0 :(得分:5)
我发现解决方案HERE我犯了一个错误,在E:\db.sql
生成的文件中我删除了那样的行
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
我认为这只是一个评论,但实际上它们也是指示。
答案 1 :(得分:1)
您不能使用--compact
的{{1}}参数,因为它会删除有关mysql在以后以正确顺序重新创建表所需的外键依赖关系的信息(注释)。