前言
在Laravel中进行数据迁移的时候,经常会碰到1071 Specified key was too long; max key length is 1000 bytes
的错误,让人头疼不已。不过好在办法总比问题多,下面就让我们通过修改两个文件来彻底解决这个问题。
Step 1
修改AppServiceProvider.php
文件,在boot()
方法中加入如下代码:
...
use Illuminate\Support\Facades\Schema;
...
public function boot(){
Schema::defaultStringLength(191);
}
...
Step 2
修改config/database.php
中的配置。
原来的代码:
...
'mysql' => [
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'strict' => true, // 严格模式
'engine' => null // mysql 引擎
]
...
修改为:
...
'mysql' => [
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'strict' => false, // 关闭严格模式
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC' // mysql引擎修改为InnoDB,并且行格式设置为动态的
]
...
接下来就可以愉快的使用Laravel的数据迁移了。