错误 - 在 phpmyadmin 中导入 .sql 文件时

Error- When importing .sql file in phpmyadmin

我有一个 .sql 文件,它是用 MySQL Workbench 创建的。我已经导出文件从 Workbench.sql。但是当我尝试导入这个 .sql localhost/phpmyadmin 中的文件显示错误。

1005 - Can't create table amarjobs.profiles (errno: 150 "Foreign key constraint is incorrectly formed")

这是profiles table:

-- 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;

有些table导入了,为什么profiles table没有导入?你能告诉我问题出在哪里吗?

假设您正在从其他服务器导入数据。所以不应该有与外键创建相关的问题...

首先导入它的 parent table users table 然后你可以导入这个 table。这是干净的方式。

否则你可以在设置foreign_key_checks禁用后强制导入。但是你不应该这样做并使用干净的方式。

更新:

您可以通过此查询获取所有相关的 table:

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 列中的所有 table 提供所有 parents tables,因此从 my_table & parent_table 从源服务器列出并备份这些 table 并在目标服务器上恢复。

您应该将 (id) 作为 amarjobs.users table.

中的主键