A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 游龙 于 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);



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马