我想在表中创建关系,但是在尝试创建关系时出现以下错误:“外键约束格式不正确”。
表格:
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/