Laravel 5.4:指定的键太长错误

Den*_*eng 1 laravel laravel-5.4

我在使用 laravel migrate 命令时遇到问题。表明 :

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

但是我的 mysql 版本是 5.7.14,我的字符集是:

mysql> show variables like "%char%";
+--------------------------+-------------------------------------------------+
| Variable_name            | Value                                           |
+--------------------------+-------------------------------------------------+
| character_set_client     | utf8mb4                                         |
| character_set_connection | utf8mb4                                         |
| character_set_database   | utf8mb4                                         |
| character_set_filesystem | binary                                          |
| character_set_results    | utf8mb4                                         |
| character_set_server     | utf8mb4                                         |
| character_set_system     | utf8                                            |
| character_sets_dir       | D:\wamp64\bin\mysql\mysql5.7.14\share\charsets\ |
+--------------------------+-------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

所以不应该像医生所说的那样有任何问题。有人可以帮助我吗?

Pra*_*rve 7

对于最新版本的 MySQL 5.7.7 或更高版本,您不会收到任何错误,但是对于任何 Laravel 版本中的以下版本,您需要在AppServiceProvider.php放置在的文件中添加一行app/Providers/AppServiceProvider.php

您需要更新以下内容:

public function boot()
{
    Schema::defaultStringLength(191);
}
Run Code Online (Sandbox Code Playgroud)

请不要忘记添加行

use Illuminate\Support\Facades\Schema;
Run Code Online (Sandbox Code Playgroud)

在文件的顶部。

参考以下博客:https : //laravel-news.com/laravel-5-4-key-too-long-error


pat*_*cus 5

1000 bytes错误消息指向存储引擎存在的MyISAM而不是InnoDB的提及。5.7.7 中与密钥长度相关的 MySql 更改特定于 InnoDB 引擎。

您需要将表移动到 InnoDB 存储引擎,或者如果必须使用 MyISAM,则需要使用文档中Schema::defaultStringLength(191);提到的语句。

// AppServiceProvider

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

4370 次

最近记录:

5 年,4 月 前