我决定测试新的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);
}
答案 0 :(得分:0)
你正在拨打错误的班级。类Illuminate \ Support \ Facades \ Schema没有方法defaultStringLength,但是类Illuminate \ Database \ Schema \ MySqlBuilder没有这样做。 检查文档: MySqlBuilder Docs Schema Docs
答案 1 :(得分:0)
defaultStringLength
。
答案 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中使用