【问题标题】:mySQL: Foreign Key constraint when importing databasemySQL:导入数据库时​​的外键约束
【发布时间】:2017-01-23 21:27:55
【问题描述】:

我正在将 mySQL 数据库从一台服务器导出到另一台服务器。我的导出文件包含所有表定义、数据、结构等。所有表都使用 InnoDB 引擎和 utf8 字符集。我在关闭“启用外键检查”的情况下导入 - 我的导出文件还有“SET FOREIGN_KEY_CHECKS=0;”行。

但是,当我导入数据时,我收到错误“#1215 - 无法添加外键约束”

这是输入文件中的表定义:

CREATE TABLE IF NOT EXISTS UserTable (
     Index_i int(13) NOT NULL,
     UserUUID_vc varchar(36) DEFAULT NULL,
     AccountID_i int(13) DEFAULT NULL,
     FirstName_vc varchar(30) DEFAULT NULL,
     LastName_vc varchar(40) DEFAULT NULL,
     Password_vc varchar(255) DEFAULT NULL,
     Country_vc varchar(2) DEFAULT NULL,
     DateRegistered_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
     DateAccountTypeChanged_dt timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
     DateAccountStatusChanged_dt timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
     DateAcceptedTandC_dt timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB AUTO_INCREMENT=165 DEFAULT CHARSET=utf8;

它在读取任何将 FK 等约束应用于表的语句之前就遇到了这个问题。实际上,当它触发错误消息时,它不知道这些列中的任何一个是否是外键。

有什么想法吗?

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    如果您使用的是终端,请使用您的凭据通过以下命令登录到 mysql。

    mysql -u[你的用户名] -p[你的密码]

    使用以下命令将您的 mysql 外键约束检查设置为 0。

    SET FOREIGN_KEY_CHECKS = 0;

    使用如下的源命令导入您的数据库。

    SOURCE /path/to/your/sql/file.sql

    并使用以下命令将您的 mysql 外键约束检查设置回 1。

    SET FOREIGN_KEY_CHECKS = 1;

    呜呜呜呜。奇迹般有效。 :)

    P.S :- 在 ubuntu 14.04、16.04、18.04 上测试

    【讨论】:

      【解决方案2】:

      将其添加为复选框 - 在 phpmyadmin 中禁用此查询的外键检查以允许对数据库进行更改

      【讨论】:

      • 欢迎并尝试使用示例进行解释。
      猜你喜欢
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2013-12-17
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2011-02-10
      相关资源
      最近更新 更多