本帖最后由 游龙 于 2018-7-12 15:27 编辑
我们下载好Laravel框架,在没有删除框架默认自带的迁移文件2014_10_12_000000_create_users_table.php与2014_10_12_100000_create_password_resets_table.php时,直接执行:php artisan migrate指令时会报以下错误:
In Connection.php line 647:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 by tes (SQL: alter table `users` add unique `users_email_unique`(`email`))
In Connection.php line 449:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 by tes
如下图所示:
注意:
出现以上错误是数据迁移文件中string方法中没有指定长度导致的
解决方法
方法1(推荐):将Laravel框架默认的迁移文件中所有使用string方法创建字段时都指定长度,如下图所示:
再次执行:php artisan migrate 指令,在执行之前先把数据库中所有表删除即可。
方法2:在app\Providers\AppServiceProvider.php文件中的boot方法加入:Schema::defaultStringLength(250); 如下图所示: 注意: 需要引入Schema类的命名空间:use Illuminate\Support\Facades\Schema; Schema::defaultStringLength(250); 中的250代表varchar默认长度为250
再次执行:php artisan migrate 指令,在执行之前先把数据库中所有表删除即可。
建议:
使用迁移文件创建表或修改字段类型时使用到string方法时,最好明确的指定长度,在后期维护时打开迁移文件就能很清楚哪个字段的长度。例如:$table->string('name', 50);
|