数据库迁移相关报错:
(1)首先是运行出现下面的问题:
Specified key was too long;max key length is 767 bytes
指定的键太长了,最大键的长是767bytes
因为laravel默认字符串长度是767bytes,所以要自己去手动配置
解决方案:(1)在app/providers/AppServiceProvider.php中boot方法中加上
Schema::defaultStringLength(191);
导入Schema类
use Illuminate\Support\Facades\Schema;
(2)也可以直接在迁移数据库中加入
Schema::defaultStringLength(191);
噜噜噜,都是一样的道理。
(2)更改了之后还是出现了错误:脑壳疼
仔细寻找问题,我的用户迁移表是这个样子的:
解释:
很多小伙伴习惯于设置字段$table->string(‘username’, 100);
第一个参数是字段名,第二个参数是字段长度;
于是乎就报了像我那样的错误。
**laravel数据库迁移中integer类型是无法指定长度的,很多小伙伴对integer类型传第二个参数后习惯于像string类型一样设置,结果就会发现迁移报以错误
查看了错误提示后发现通过integer指定长度创建的子段自动添加了auto increament 以及 primary key 属性。
查看源代码后发现integer方法的第二个参数并不是指定长度,而是是否设置auto increment,所以integer方法无法指定子段长度,默认为11**
laravel中文社区文档:数据库迁移
去掉第二个参数之后:
必要时看文档还时有很大必要的!!!