我尝试创建关系时出错:外键约束格式不正确-MariaDB
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我尝试创建关系时出错:外键约束格式不正确-MariaDB相关的知识,希望对你有一定的参考价值。
[我想在表中创建关系,但是在尝试创建关系时出现此错误:“外键约束格式不正确”。
表格: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。我看不到代码,但那里可能有问题。
您的表名错误。更改
变更表
repo_file_var_values
添加约束repo_file_var_values_file_id_foreign
外键(file_id
)引用repo_files
(id
)
to
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,
to
`file_id` bigint(20) unsigned NOT NULL,
以上是关于我尝试创建关系时出错:外键约束格式不正确-MariaDB的主要内容,如果未能解决你的问题,请参考以下文章
MySQL + Rails:errno:150“外键约束格式不正确”