У меня есть следующая таблица, закодированная в utf8mb4
:
CREATE TABLE IF NOT EXISTS `account` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`customer_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(45) NOT NULL,
`username` VARCHAR(254) NOT NULL,
`password` CHAR(60) NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_table1_customer_idx` (`customer_id` ASC),
UNIQUE INDEX `unique_account` (`customer_id` ASC, `username` ASC),
CONSTRAINT `fk_table1_customer`
FOREIGN KEY (`customer_id`)
REFERENCES `customer` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
ROW_FORMAT = DYNAMIC;
Мне нужно добавить к ней логический столбец, так что вот что я делаю:
ALTER TABLE `account`
ADD COLUMN `is_customer_admin`
INT(4) NOT NULL DEFAULT 0
AFTER `customer_id`;
Я такжепопытался добавить столбец BOOLEAN
вместо INT(4)
Однако я получаю сообщение об ошибке:
ОШИБКА 1071 (42000): указанный ключ слишком длинный;максимальная длина ключа составляет 767 байт
Впервые я сталкиваюсь с такой ошибкой.Я нашел несколько вопросов об этой конкретной ошибке, однако сам не смог применить ее к своей ситуации.
С этот вопрос Я понимаю, что username
может быть слишком длинным, но потомЯ не понимаю, как они создали эту таблицу в первую очередь.Мой запрос не касается этого поля.