Организация прав доступа на сайте

Не понимаю, в чем косяк создания foreign key?

Валится ошибка:

Невозможно создать таблицу account_roles (ошибка: 150 "Foreign key constraint is incorrectly formed")

, хотя типы столбцов идентичны.

По ситуации: Организовываю права на самописной CMS, для этого завожу 3 таблицы:

account (id, login, password, email)

roles (role_name, read, edit)

account_roles(id_user, role), которая должна хранить в себе уникальную по id_user запись для присваивания 1-пользователю одной из ролей (admin, default, banned)

Мой SQL запрос выглядит следующим образом :

CREATE TABLE `account` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  `login` varchar(100) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Дамп данных таблицы `account`
--

INSERT INTO `account` (`id`, `login`, `password`, `email`) VALUE
(1, 'testuser', '$2y$10$fkxT3kqlsEBcaqAZ.2VSx.rSwy872qzk2ApUyhuhIOYpDZBw/ecv2', 'testuser@testuser')

-- --------------------------------------------------------

--
-- Структура таблицы `account_roles`
--

--
-- Структура таблицы `roles`
--

CREATE TABLE `roles` (
  `role_name` varchar(255) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY(`role_name`),
  `read` tinyint(1) NOT NULL,
  `edit` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Дамп данных таблицы `roles`
--

INSERT INTO `roles` (`role_name`, `read`, `edit`) VALUES
('admin', 1, 1),
('banned', 0, 0),
('default', 1, 0);



CREATE TABLE `account_roles` (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
   Primary key(`id`),
  `id_user` int(10) UNSIGNED NOT NULL,
   FOREIGN KEY (`id_user`) REFERENCES account(id) ON UPDATE CASCADE ON DELETE CASCADE,
  `role` varchar(255) NOT NULL,
   FOREIGN KEY ( `role` ) REFERENCES roles(role_name) ON UPDATE CASCADE ON DELETE RESTRICT
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Дамп данных таблицы `account_roles`
--

INSERT INTO `account_roles` (`id_user`, `role`) VALUES
(1, 'default');

Ответы (0 шт):