错误 - 在phpmyadmin

时间:2016-03-28 06:07:19

标签: mysql phpmyadmin

我有一个 {{}} 文件,该文件是使用 MySQL Workbench 创建的。我已经完成了从 Workbench 导出文件到 .sql 。但是当我尝试在 localhost / phpmyadmin 中导入此 .sql 文件时,显示错误。

  

1005 - 无法创建表amarjobsprofiles(错误: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表未导入?你能告诉我问题出在哪里吗?

2 个答案:

答案 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)

您应该在amarjobsusers表格中设置(id)主键。