当前位置: 代码迷 >> 综合 >> laravel5.6博客项目开发===(一)数据库迁移以及报错
  详细解决方案

laravel5.6博客项目开发===(一)数据库迁移以及报错

热度:1   发布时间:2023-12-14 22:53:12.0

数据库迁移相关报错:
(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中文社区文档:数据库迁移这里写图片描述

去掉第二个参数之后:
这里写图片描述

必要时看文档还时有很大必要的!!!