Laravel 5.4 常见错误:Specified key was too long | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区

[Laravel 5.4 常见错误:Specified key was too long | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区]

[file

](https://lccdn.phphub.org/uploads/images/201701/28/5350/Ednte3vvRQ.png)

只是前几天骏妞儿玩 5.4 的时候就遇到这个问题了~~

Laravel 5.4 把默认数据库字符集更改成 utf8mb4,作为对存储 emojis 的支持。只要你运行的是 MySQL v5.7.7 及更高版本,那么你就不会出现本文提到的错误。

对于那些运行 MariaDB 或旧版本的 MySQL 的程序,可能会在尝试运行迁移时遇到下面的错误:

[Illuminate\Database\QueryException]
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))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

如 Laravel 5.4 中关于 迁移 的文档,你要做的是编辑 AppServiceProvider.php 文件,并在 boot 方法内设置默认字符串的长度:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

然后,就没然后了。

    • *

Tips (2017 年 4 月 6 日):

Schema::defaultStringLength(191); 是设置好的默认的字符串长度,也就是说,迁移中的字段没有设置长度的话,varchar 字段会被默认成长度只有 191 哦!

参考链接:https://laravel-news.com/laravel-5-4-key-too-long-error

Stay Hungry, Stay Foolish.


Original url: Access

Created at: 2018-10-10 14:30:30

Category: default

Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论