mySQL:导入数据库时​​的外键约束

时间:2017-01-23 21:27:55

标签: mysql phpmyadmin

我将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等约束应用于表格的语句之前遇到此问题。实际上,当它触发错误消息时,它不知道这些列中是否有任何外键。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

  

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

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

  

SET FOREIGN_KEY_CHECKS = 0;

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

  

来源/path/to/your/sql/file.sql

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

  

SET FOREIGN_KEY_CHECKS = 1;

Hurrrrrraaaaah。奇迹般有效。 :)

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

相关问题