Laravel在php artisan make:auth之后迁移php artisan时失败

Laravel在php artisan make:auth之后迁移php artisan时失败,php,mysql,database,laravel,authentication,Php,Mysql,Database,Laravel,Authentication,我决定测试一下新的拉威尔。所以我从基本命令开始: $ laravel new blog $ php artisan make:auth $ php artisan migrate 我编辑了我的AppServiceProvider.php文件,并向boot方法添加了一个默认的字符串长度 use Illuminate\Support\Facades\Schema; function boot() { Schema::defaultStringLength(191); } 但我仍然有

我决定测试一下新的拉威尔。所以我从基本命令开始:

$ laravel new blog

$ php artisan make:auth

$ php artisan migrate
我编辑了我的AppServiceProvider.php文件,并向boot方法添加了一个默认的字符串长度

use Illuminate\Support\Facades\Schema;

function boot()
{
    Schema::defaultStringLength(191);
}
但我仍然有一个错误:

  [Symfony\Component\Debug\Exception\FatalErrorException]
  Call to undefined method Illuminate\Database\Schema\MySqlBuilder::defaultStringLength()

你打错班级了。Illumb\Support\Facades\Schema类没有defaultStringLength方法,但由Illumb\Database\Schema\MySqlBuilder类代替。 检查文档:
defaultStringLength
是在Laravel 5.4中引入的


这是因为默认情况下,Laravel 5.4使用utf8mb4字符集,其中包括对在数据库中存储“emojis”的支持。您可以从以下两种解决方案中选择任意一种:

1) 改变

2) 编辑位于App\Providers\AppServiceProvider.php的AppServiceProvider,并将以下行添加到boot()方法并加载架构外观:

use Illuminate\Support\Facades\Schema;

/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
    Schema::defaultStringLength(191);
}
这将实际更改数据库中的默认最大字段长度,并实际将最大字符串长度从255缩短到最多191个字符(utf8每个字符使用3个字节,而utf8mb4每个字符使用4个字节,您的字段现在可以少容纳25%的字符255*75%=191.25)。因此,如果在迁移中不手动设置字符串字段,新的默认值将是191。

在app/providers中 开放应用程序服务提供商

开机功能

  Schema::defaultStringLength(191);
并在顶部添加以下类

use Illuminate\Support\Facades\Schema;

虽然没有必要在laravel 5.6中使用laravel的哪个版本?@AguDondo laravel 5.2当我添加类Illumb\Database\Schema\MySqlBuilder而不是类Illumb\Support\Facades\Schema时,有一个错误,类“App\Providers\Schema”找不到OK,但如何在没有defaultStringLength的情况下进行注册,它不起作用,也不会在users表中插入数据@AguDondoI将Laravel5.2升级到了5.4,但在@AguDondo上仍然有相同的错误
  Schema::defaultStringLength(191);
use Illuminate\Support\Facades\Schema;