【发布时间】:2018-11-15 19:18:18
【问题描述】:
我有一个用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)
但是,我得到了错误:
ERROR 1071 (42000):指定的密钥太长;最大密钥长度为 767 字节
这是我第一次遇到这样的错误。我确实发现了有关该特定错误的一些问题,但是,我自己无法将其应用于我的情况。
来自this question 我知道username 可能太长了,但是我不明白他们最初是如何创建该表的。我的查询没有触及该字段。
【问题讨论】:
-
你有关于用户名的索引吗??
-
这不是我的数据库,所以请原谅缺乏细节......我将用他们用来创建它的查询替换表结构
-
你的 MySQL 服务器版本是多少?
-
@MadhurBhaiya 10.1.31-MariaDB