Laravel 5.4因特殊字段太长导致migrations报错的解决

前言

本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持。MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误:

 [Illuminate\Database\QueryException]
 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `use
 rs_email_unique`(`email`))

 [PDOException]
 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

解决方法

经过查询,我们可以在 AppServiceProvider.php 文件里的 boot 方法里设置一个默认值:

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
//添加的代码
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
 /**
  * Bootstrap any application services.
  *
  * @return void
  */
 public function boot()
 {
  //添加的代码
  Schema::defaultStringLength(191);
 }

 /**
  * Register any application services.
  *
  * @return void
  */
 public function register()
 {
  //
 }
}

总结

以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 基于Laravel5.4实现多字段登录功能方法示例

    前言 最近在一个项目中需要实现一个多字段登录功能,简单来说就是可以使用用户名.邮箱或手机号任意一种方式进行登录.所以本文就来给大家介绍了关于Laravel5.4多字段登录的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. 以下内容基于laravel5.4 方法如下: 首先,通过artisan工具生成auth模块 php artisan make:auth 这时候App\Http\Controllers目录下会新增一个Auth目录,该目录下为注册登录相关的控制器,resour

  • Laravel实现用户多字段认证的解决方法

    前言 本文主要给大家介绍了关于Laravel用户多字段认证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 解决方案: 登录字段不超过两个的(简单的解决方案) 登录字段大于或等于三个的(相对复杂一些) 登录字段不超过两个的 我在网上看到一种相对简单解决方案,但是不能解决所有两个字段的验证: filter_var($request->input('login'), FILTER_VALIDATE_EMAIL) ? 'email' : 'name' 过滤请求中的表单内容,

  • Laravel 5.4因特殊字段太长导致migrations报错的解决

    前言 本文主要介绍了关于Laravel 5.4因特殊字段太长导致migrations报错的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.MySQL 需要v5.7.7或者更高版本,当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你会碰到下面这个错误: [Illuminate\Database\QueryException] SQLS

  • Pandas Matplotlib保存图形时坐标轴标签太长导致显示不全问题的解决

    目录 前言 1. 问题描述 2. 问题原因 4. 解决方法 结束语 前言 本篇博客主要解决在使用pandas绘制图像并保存时,由于标签太长,导致坐标轴上的标签显示不全的问题.刚遇到问题时调整了一下图片大小,然鹅并没有卵用,于是乎就检索了一下问题,发现没有解决pandas的.查询无果后,查看了一下官方文档,顿悟,这不就是matplotlib嘛,换了一个关键字再查询,果然,就是.所以本篇同样适用于解决matplotlib绘制图像时出现的这个问题. # 部分代码 df_sparsity = disti

  • laravel执行php artisan migrate报错的解决方法

    报错一 $ php artisan migrate Illuminate\Database\QueryException : could not find driver (SQL: select * fr om information_schema.tables where table_schema = dev_oms and table_name = migra tions) at D:\WWW\dev_oms\vendor\laravel\framework\src\Illuminate\D

  • pyecharts X轴标签太长被截断的问题及解决

    目录 pyecharts X轴标签太长被截断 方案一 方案二 Pyecharts X轴显示不全问题 成功解决的代码如下 pyecharts X轴标签太长被截断 方案一 旋转标签 使用rotate旋转X轴标签 # rotate 旋转角度    bar.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15,interval=0))) 方案二 使用grid设置X轴下方距离图片边缘的距离 gri

  • 解决postgreSql 将Varchar类型字段修改为Int类型报错的问题

    项目使用postgreSql数据库,先需要将库中的某个表中的某个字段类型由Varchar改成Int,直接右键设计表,修改类型为int,保存的时候报错,错误如下: 意思就是,这个crt_user字段不能自动转换成成类型bigint,需要使用USING表达式来转换. 这是在库中运行修改字段的类型的sql: ALTER TABLE auth_client_service ALTER COLUMN crt_user SET DATA TYPE int8 USING crt_user:: int8, AL

  • Mybatis Plus查询时sql字段名大小写报错的解决

    目录 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 解决方案 Mybatis Plus返回map大小写问题 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 在数据库中没有找到img_url 列 数据库字段名是是大写 解决方案 在application.properties中加: mybatis-plus.configuration.map-underscore-to-camel-case=false 完美运行~ Mybatis Plus返回m

  • MySQL中因字段字符集不同导致索引不能命中的解决方法

    什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间. 例如:有一张person表,其中有2W条记录,记录着2W个人的信息.有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息. 如果没有索引,那么将从表中第一条记录

  • oracle 实际值超过数据库某个字段指定长度报错解决

    ORA-01438: value larger than specified precision allowed for this column 实际值的长度大于了数据库里某个字段允许的最大长度导致的插入失败问题. 常见的场景是oracle sequence自动增长,系统用到一定的时候,sequence的值不断的增大,系统开始报错. 解决方法:更改字段的长度解决

  • python一行sql太长折成多行并且有多个参数的方法

    sql语句 有一个非常长的sql,用编辑器打开编写的时候太长了导致编写非常吃力,而且容易错乱,我想做的是把A,B,C三个变量赋值到sql中的字段中去 A=1 B=2 C=3 sql = "update student t set t.name = '',t.sex = '',t.age = '',t.height = '',t.weight = '',t.class = '',t.stuid = '',t.xxx = '' where t.stuid= '' and t.xxx = '';&qu

  • 字段太多jquey快速清空表单内容方法

    做了个复杂查询的页面,字段太多了,填了一次,想清空挺麻烦的 $('#myform')[0].reset(); 虽然reset方法可以做到一部分,但是如果你有个元素是这样的 <input name="percent" value="50"/> 那么点击reset只会还原成50 于是乎,有了以下方法,网上浏览过来, $(':input','#myform') .not(':button, :submit, :reset, :hidden') .val('')

随机推荐