У меня проблема с внешними ключами MariaDB ... Это таблицы:
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`password` binary(20) NOT NULL,
`role` smallint(5) unsigned NOT NULL DEFAULT 2,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_UN` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
CREATE TABLE `roles` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `roles_name_UN` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Я не могу понять, почему, когда я пытаюсь обновить «пользователей» с помощью этой команды:
ALTER TABLE unito_tweb.users ADD CONSTRAINT users_role_FK FOREIGN KEY (`role`) REFERENCES unito_tweb.roles(id) ON DELETE SET DEFAULT ON UPDATE CASCADE;
, я получаю эту ошибку:
Can't create table `unito_tweb`.`users` (errno: 150 "Foreign key constraint is incorrectly formed")