在我们使用Laravel框架时候,执行php artisan migrate 进行数据库迁移时,会报错误, 这时由于Laravel 对默认数据库字符集进行了更改 utf8mb4
它包含了对存储表情符号的支持 , 如果您的MySQL版本5.7.7不受影响,低于该版本会报标题中的错误。大概其意思为:
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节
要解决此问题,您只需编辑 AppServiceProvider.php
文件并在 boot
方法内设置默认字符串长度:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
再次执行php artisan migrate,如果提示报错表已经存在,则需要把对应的表删除即可