相关疑难解决方法(0)

#1071 - 指定密钥太长; 最大密钥长度为767字节

当我执行以下命令时:

ALTER TABLE `mytable` ADD UNIQUE (
`column1` ,
`column2`
);
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

#1071 - Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

有关column1和column2的信息:

column1 varchar(20) utf8_general_ci
column2  varchar(500) utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

我认为varchar(20)只需要21个字节,而varchar(500)只需要501个字节.所以总字节数是522,小于767.那么为什么我会得到错误信息呢?

#1071 - Specified key was too long; max key length is 767 bytes
Run Code Online (Sandbox Code Playgroud)

mysql varchar byte mysql-error-1071

521
推荐指数
23
解决办法
57万
查看次数

Laravel迁移:即使指定,唯一键也太长

我正在尝试在Laravel中迁移用户表.当我运行迁移时,我收到此错误:

[Illuminate\Database\QueryException] SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节(SQL:alter table usersadd unique users_email_uniq(email))

我的迁移如下:

Schema::create('users', function(Blueprint $table)
{
    $table->increments('id');
    $table->string('name', 32);
    $table->string('username', 32);
    $table->string('email', 320);
    $table->string('password', 64);
    $table->string('role', 32);
    $table->string('confirmation_code');
    $table->boolean('confirmed')->default(true);
    $table->timestamps();

    $table->unique('email', 'users_email_uniq');
});
Run Code Online (Sandbox Code Playgroud)

经过一些谷歌搜索我遇到了这个错误报告,泰勒说你可以指定索引键作为unique()我做的第二个参数.它仍然给出了错误.这里发生了什么?

php mysql laravel

150
推荐指数
16
解决办法
21万
查看次数

如何在MariaDB 10中启用大型索引?

在Debian Jessie中,我安装了MariaDB服务器10.0.30,并尝试增加最大密钥长度.AFAIU取决于innodb_large_prefix启用的配置参数.根据文档,它还需要barracuda文件格式和innodb_file_per_table.在config中设置并重新启动服务器后,我在客户端看到,这些参数设置正确:

> SHOW GLOBAL VARIABLES LIKE 'innodb_large%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | ON    |
+---------------------+-------+
1 row in set (0.00 sec)

> SHOW GLOBAL VARIABLES LIKE 'innodb_file%';
+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+
| innodb_file_format       | Barracuda |
| innodb_file_format_check | OFF       |
| innodb_file_format_max   | Antelope  |
| innodb_file_per_table    | ON        |
+--------------------------+-----------+
4 rows in set (0.00 sec)

> SHOW GLOBAL VARIABLES LIKE …
Run Code Online (Sandbox Code Playgroud)

mysql indexing utf-8 mariadb

15
推荐指数
3
解决办法
2万
查看次数

如何创建这个表?#1071 - 指定密钥太长; 最大密钥长度为1000字节

CREATE TABLE mini
(
realurl varchar(200) NOT NULL,
catagory varchar(200),
PRIMARY KEY (realurl,catagory),
FOREIGN KEY (realurl) REFERENCES main(realurl)
)
Run Code Online (Sandbox Code Playgroud)

错误:`#1071 - 指定密钥太长; 最大密钥长度为1000字节

为什么我不能创建这个表?我应该更改什么来创建此表?

mysql

9
推荐指数
4
解决办法
7万
查看次数

标签 统计

mysql ×4

byte ×1

indexing ×1

laravel ×1

mariadb ×1

mysql-error-1071 ×1

php ×1

utf-8 ×1

varchar ×1