phpmyadmin导出后缺少外键约束

i2byvkas  于 2022-11-09  发布在  PHP
关注(0)|答案(3)|浏览(171)

我使用以下脚本在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;

当我从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 ;

所以问题是:我的外键约束在哪里?KEY引用FK吗?看起来utenteattivita这两个表在新生成的脚本中不再被引用。我哪里做错了?

编辑

在phpMyAdmin中,配置表的导出时,我发现了选项“Display Foreign Key Relationship”(显示外键关系)。如果我标记了此选项,我还将在脚本中获得此代码

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

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

x8goxv8g

x8goxv8g1#

因此,问题是:外键约束在哪里?

它们是在数据库中定义的。SHOW CREATE TABLE users_x_activities的输出将包括外键约束定义。
外键约束的定义可能出现在所生成脚本末尾的单独ALTER TABLE语句中。

KEY是否指FK?

这里的KEY id_user (id_user)号指的是一个索引。

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

是的,您说得对。CREATE TABLE语句中不包括外键约束条件。
"我哪里做错了"
MySQL SHOW CREATE TABLE users_x_activities将包含外键约束。
外键约束可能包含在phpMyAdmin生成的脚本中,但在脚本的末尾,在单独的ALTER TABLE语句中。

2cmtqfgy

2cmtqfgy2#

使用phpmyadmin管理表时,有两种类型的约束:

  • internal:当你用phpmyadmin设计器设置约束时,例如存储为internal的约束,它将不包含在导出中。
  • innoDB:这些约束包括在导出检查链接的视频有关它

Setting up a foreign key constraint

wqlqzqxt

wqlqzqxt3#

请遵循下列步骤:

  1. phpmyadmin配置

1.导出时间客户配置

相关问题