我要创建此表:
CREATE TABLE IF NOT EXISTS `my-database`.`user_product` (
`user_product_id` INT NOT NULL AUTO_INCREMENT,
`FK_user_id` INT NOT NULL,
`created_at` DATETIME NOT NULL,
`long_column_1` VARCHAR(10000) NOT NULL,
`long_column_2` VARCHAR(10000) NULL DEFAULT NULL,
`deleted_at` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`user_product_id`),
INDEX `user_id_idx` (`FK_user_id` ASC) VISIBLE,
CONSTRAINT `FK_user_id`
FOREIGN KEY (`FK_user_id`)
REFERENCES `my-database`.`user` (`user_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
客户端需要两列,可以很短也可以很长,"long\u column\u 1"和"long\u column\u 2"(忽略它们的名称,这只是示例).我读到文本类型比VARCHAR慢,可能99%的时候两列都会短于255,所以我创建了VARCHAR(10000)而不是TEXT.
Why does it give "Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535" error?
总大小不大于65535,因为10000+10000=20000.
这是"用户"表,以备不时之需:
CREATE TABLE IF NOT EXISTS `my-database`.`user` (
`user_id` INT NOT NULL AUTO_INCREMENT,
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(60) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
ENGINE = InnoDB;
我正在使用MySql 8