在php artisan make:auth之后,Laravel失败的php工匠迁移

时间:2017-05-13 17:49:27

标签: php mysql database laravel authentication

我决定测试新的Laravel。所以我开始使用基本命令:

/dev/ptmx

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

$ laravel new blog

$ php artisan make:auth

$ php artisan migrate

但我仍有错误:

use Illuminate\Support\Facades\Schema;

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

4 个答案:

答案 0 :(得分:0)

你正在拨打错误的班级。类Illuminate \ Support \ Facades \ Schema没有方法defaultStringLength,但是类Illuminate \ Database \ Schema \ MySqlBuilder没有这样做。 检查文档: MySqlBuilder Docs Schema Docs

答案 1 :(得分:0)

Laravel 5.4中引入了

defaultStringLength

Reference

答案 2 :(得分:0)

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

1)改变

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

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

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。

答案 3 :(得分:0)

在应用/提供商中 打开AppServiceProviders

启动功能

  Schema::defaultStringLength(191);

并在顶部添加以下类

use Illuminate\Support\Facades\Schema;

虽然没有必要在laravel 5.6中使用