我想在表中创建关系,但是在尝试创建关系时出现以下错误:“外键约束格式不正确”。

表格:
repository_files:

CREATE TABLE IF NOT EXISTS `repository_files` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `id_user` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `repository_files_id_user_foreign` (`id_user`),
  CONSTRAINT `repository_files_id_user_foreign` FOREIGN KEY (`id_user`) REFERENCES `repository_m_users` (`CODUSU`)
)


repository_file_var_values:

CREATE TABLE IF NOT EXISTS `repository_file_var_values` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `file_id` int(11) NOT NULL,
  `var` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `value` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


错误是当我尝试以下操作时:

alter table `repo_file_var_values`
add constraint `repo_file_var_values_file_id_foreign`
foreign key (`file_id`)
references `repo_files` (`id`)


可能是什么问题?

最佳答案

您有几个问题:


FK到第一个表中的repository_m_users。我看不到代码,但是您可能在那儿遇到了问题。
您的表名错误。更改


alter table `repo_file_var_values`
add constraint `repo_file_var_values_file_id_foreign`
foreign key (`file_id`)
references `repo_files` (`id`)




alter table `repository_file_var_values`
add constraint `repo_file_var_values_file_id_foreign`
foreign key (`file_id`)
references `repository_file_var_values` (`id`)



最后,更改file_id类型以匹配PK:


`file_id` int(11) NOT NULL,




`file_id` bigint(20) unsigned NOT NULL,

关于mysql - 当我尝试创建关系时出错:外键约束格式不正确-MariaDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58824268/

10-10 04:01