phpmyadmin导出后缺少外键约束

GVi*_*i82 10 mysql sql key foreign-keys phpmyadmin

我使用以下脚本在mysql中创建一个表:

  CREATE TABLE IF NOT EXISTS users_x_activities(
  id int NOT NULL auto_increment, 
  id_user int unsigned NOT NULL,
  id_attivita int unsigned NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (id_user) REFERENCES utente(id),
  FOREIGN KEY (id_attivita) REFERENCES attivita(id)
  ) ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)

当我从phpMyAdmin导出创建的表时,我获得以下脚本

CREATE TABLE IF NOT EXISTS `users_x_activities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user` int(10) unsigned NOT NULL,
  `id_attivita` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_user` (`id_user`),
  KEY `id_attivita` (`id_attivita`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

所以问题是:我的外键约束在哪里?确实KEY是指FK?看来这两个表utente,并attivita在新生成的脚本不再被引用.我哪里做错了?

编辑

在phpMyAdmin中,配置表的导出我找到了"显示外键关系"选项如果我标记了这个选项我还在脚本中输入了这段代码

--
-- RELATIONS FOR TABLE `users_x_activity`:
--   `id_user`
--       `utente` -> `id`
--   `id_attivita`
--       `attivita` -> `id`
--

--
-- Constraints for dumped tables
--

--
-- Constraints for table `users_x_activity`
--
ALTER TABLE `users_x_activity`
  ADD CONSTRAINT `users_x_activities_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `utente` (`id`),
  ADD CONSTRAINT `users_x_activities_ibfk_2` FOREIGN KEY (`id_attivita`) REFERENCES `attivita` (`id`);
Run Code Online (Sandbox Code Playgroud)

这意味着如果我添加"显示外键关系"选项,我还获得了FK约束?在其他情况下不?

spe*_*593 4

所以问题是:我的外键约束在哪里?

它们在数据库中定义。的输出SHOW CREATE TABLE users_x_activities将包括外键约束定义。

外键约束的定义可能出现在生成脚本末尾的单独的 ALTER TABLE 语句中。

KEY是指FK吗?

这里的No.KEY id_user (id_user)指的是索引。

似乎在新生成的脚本中不再引用 utente 和 attivita 这两个表。

是的,你是对的。外键约束不包含在 CREATE TABLE 语句中。

我哪里做错了?

MySQLSHOW CREATE TABLE users_x_activities将包含外键约束。

外键约束可能包含在 phpMyAdmin 生成的脚本中,但位于脚本末尾的单独ALTER TABLE语句中。