相关疑难解决方法(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万
查看次数

如何修复MySql:索引列大小太大(Laravel migrate)

我复制了一个带有流浪盒的项目,它安装了Debian,Nginx,PhpMyAdmin,..随着新项目,Laravel php artisan migrate不再工作,我得到错误:

[Illuminate\Database\QueryException]                                                                                                                                      
  SQLSTATE[HY000]: General error: 1709 Index column size too large. The maximum column size is 767 bytes. (SQL: alter table `courses` add unique `courses_name_unique`(`na  
  me`))
Run Code Online (Sandbox Code Playgroud)

当我创建工作项目数据库的转储(结构+数据)并将其导入数据库时​​给出迁移时的错误,然后一切正常,它创建所有表和数据导入..

如何修复大小以便我可以运行migrate方法?

mysql indexing vagrant laravel-5

16
推荐指数
5
解决办法
3万
查看次数

laravel 5.4指定键太长,为什么数字191

我知道这个问题已经讨论,解决或关闭了.
但我想问的是,为什么数字191?

Schema::defaultStringLength(191);
Run Code Online (Sandbox Code Playgroud)

我试过:如果192,错了.191,好的.在此之后,我还编辑了database\migrations\xxx_user_table.php
更改此设置

$table->string('name');
Run Code Online (Sandbox Code Playgroud)

成为

$table->string('name', 255);
Run Code Online (Sandbox Code Playgroud)

然后运行php artisan migrate,没关系.使用一些mysql工具查看用户表的模式,varchar的名称长度实际为255,其他列为191.

我看到这些文章
@ https://laravel-news.com/laravel-5-4-key-too-long-error
@ Laravel迁移:唯一密钥太长,即使指定
@ https://github.com/ laravel/framework/issues/17508
@ https://laravel.com/docs/master/migrations#creating-indexes

这个:@ https://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.html

对于使用REDUNDANT或COMPACT行格式的InnoDB表,索引键前缀长度限制为767字节.例如,您可能会在TEXT或VARCHAR列上使用超过255个字符的列前缀索引达到此限制,假设为utf8mb3字符集,并且每个字符最多包含3个字节.

但为什么长度255的名字还可以?
并且192*3 = 576,小于767,为什么192不行?

laravel

9
推荐指数
1
解决办法
6554
查看次数

Php工匠迁移失败了Laravel

我有以下错误.有人理解为什么?

php工匠迁移

 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key 
was too long; max key length is 767 bytes (SQL: alter table `users` 
add unique `users_email_unique`(`email`))
Run Code Online (Sandbox Code Playgroud)

create_users_table.php

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name',255);
    $table->string('email',255)->unique();
    $table->string('password',255);
    $table->rememberToken();
    $table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)

php laravel

5
推荐指数
1
解决办法
636
查看次数

Illuminate\Database\QueryException SQLSTATE[42000]

我正在使用 Laravel,当我尝试运行php artisan make:migrate它时显示此错误:

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

在 /Users/soksan/Desktop/TestLaravel/multiUsers/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664

  660|    // If an exception occurs when attempting to run a query, we'll format the error
  661|    // message to include the bindings with SQL, which will make this exception a
  662|    // lot more helpful to the developer instead of just the database's errors.
  663|    catch (Exception $e) {
> 664|        throw new QueryException(
  665|            $query, …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel

1
推荐指数
1
解决办法
5430
查看次数

标签 统计

laravel ×3

mysql ×3

php ×2

byte ×1

indexing ×1

laravel-5 ×1

mysql-error-1071 ×1

vagrant ×1

varchar ×1