7

当我执行以下命令时:

create table assessment (
    id integer not null auto_increment unique,
    assignment_weight_type tinyint not null,
    description varchar(255),
    end_date datetime not null,
    from_grade tinyint not null,
    f_id tinyint not null,
    name varchar(255) not null,
    start_date datetime not null,
    status tinyint not null,
    weight smallint,
    school_id integer not null,
    school_year_id integer not null,
    s_id integer, primary key (id),
    unique (name, school_id, school_year_id, from_grade, f_id)
) ENGINE=InnoDB;

我收到此错误消息:

Specified key was too long; max key length is 767 bytes

我正在使用 utf8mb4 的字符集。那么为什么我会收到错误消息?

4

3 回答 3

6

utf8mb4每个字符最多使用四个字节,因此名称本身可能占用多达 1020 个字节。

于 2012-05-25T03:39:44.783 回答
2

我也遇到了同样的问题,我在 mysql 中为这些变量设置值,如下所示,它解决了这个问题。

1.global.innodb_large_prefix = 1

2.innodb_file_format=梭子鱼

3.innodb_file_format_max=梭子鱼

于 2017-12-07T20:24:15.660 回答
-1

使用此命令创建数据库。

 create database <DATABASE_NAME> character set latin1;
于 2018-05-23T08:34:11.633 回答