我有一个 {{}} 文件,该文件是使用 MySQL Workbench 创建的。我已经完成了从 Workbench 导出文件到 .sql 。但是当我尝试在 localhost / phpmyadmin 中导入此 .sql 文件时,显示错误。
1005 - 无法创建表
amarjobs
。profiles
(错误:150"外国 键约束形成错误")
这是profiles
表:
-- Table `amarjobs`.`profiles`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `amarjobs`.`profiles` (
`id` INT NOT NULL AUTO_INCREMENT COMMENT 'job seeker\'s profile table',
`userID` INT NULL,
`firstName` VARCHAR(45) NULL,
`lastName` VARCHAR(45) NULL,
`middleName` VARCHAR(45) NULL,
`DOB` DATE NULL,
`gender` ENUM('M','F','Other') NULL,
`featuredProfile` ENUM('Y','N') NULL DEFAULT 'N',
`email` VARCHAR(100) NULL,
`phone` VARCHAR(50) NULL,
`summary` VARCHAR(500) NULL,
`profilePic` VARCHAR(32) NULL,
`created_at` TIMESTAMP NULL,
`updated_at` TIMESTAMP NULL,
PRIMARY KEY (`id`),
INDEX `fkProfilesUserID_idx` (`userID` ASC),
CONSTRAINT `fkProfilesUserID`
FOREIGN KEY (`userID`)
REFERENCES `amarjobs`.`users` (`id`)
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
导入了一些表,但为什么profiles
表未导入?你能告诉我问题出在哪里吗?
答案 0 :(得分:2)
假设您要从其他服务器导入数据。所以不应该存在与外键创建有关的问题......
首先导入其父表users
表,然后您可以导入此表。这是干净的方式。
其他方面,您可以在设置foreign_key_checks禁用后强行导入。但你不应该这样做,并采用干净的方式。
<强>更新强>
您可以通过此查询获取所有相关表格:
SELECT table_name AS 'My_Table',REFERENCED_TABLE_NAME AS 'Parent_Table' FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='pass_your_db_here' AND table_name in ('table1','table2',.....'tablen') AND REFERENCED_TABLE_NAME IS NOT NULL;
上面的查询将为parent_table columnd中的所有表提供所有父表,因此从my_table&amp;获取唯一表。 parent_table列表并从源服务器备份这些表并在目标服务器上恢复。
答案 1 :(得分:0)
您应该在amarjobs
。users
表格中设置(id)主键。