我想在表中创建关系,但是在尝试创建关系时出现以下错误:“外键约束格式不正确”。
表格: 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`)
可能是什么问题?
答案 0 :(得分:0)
您有几个问题:
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` int(11) NOT NULL,
到
`file_id` bigint(20) unsigned NOT NULL,