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

摘要:
当你试着在一些MariaDB或者一些老版本的的MySQL上运行migrations命令时,你可能会碰到下面这个错误:错误如下:IlluminateDatabaseQueryException:SQLSTATE[42000]:Syntaxerrororaccessviolation:1071Specifiedkeywastoolong;maxkeylengthis1000bytes解决办法:我们可以在AppServiceProvider.php文件里的boot方法里设置一个默认值:文件路径:/app/providers/AppServiceProvider.php,加上绿色部分即可˂?phpnamespaceAppProviders;useIlluminateSupportServiceProvider;useIlluminateSupportFacadesSchema;classAppServiceProviderextendsServiceProvider{/***Bootstrapanyapplicationservices.**@returnvoid*/publicfunctionboot(){//Schema::defaultStringLength;}/***Registeranyapplicationservices.**@returnvoid*/publicfunctionregister(){//}}三、补充知识1、serviceprovidesServiceProviders是Laravel「引导」过程的核心。
IlluminateDatabaseQueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

一、总结

一句话总结:

在 AppServiceProvider.php 文件里的 boot 方法里设置一个默认值:Schema::defaultStringLength(191); 还有记得引入Schema
1 <?php
2 
3 namespace AppProviders;
4 
5 useIlluminateSupportServiceProvider;
6 useIlluminateSupportFacadesSchema;
7 
8 class AppServiceProvider extendsServiceProvider
9 {
10     /**
11 * Bootstrap any application services.
12 *
13 * @return void
14      */
15     public functionboot()
16 {
17         //
18         Schema::defaultStringLength(191);
19 }
20 
21     /**
22 * Register any application services.
23 *
24 * @return void
25      */
26     public functionregister()
27 {
28         //
29 }
30 }

1、laravel中的服务器提供者是什么?

Service Providers (服务提供者) 是 Laravel 「引导」过程的核心。这个「引导」过程可以理解成「电脑从按下开机按钮到完全进入桌面」这段时间系统干的事。

2、laravel服务提供者中两个重要的方法register()和boot()分别是做什么的?

register() :注册服务,比如注册kernel文件里面的内容
boot() :引导服务,比如这里的设置默认字符串长度:Schema::defaultStringLength(191);

3、laravel中的schema是什么?

Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、平滑的API。

二、【laravel5.6】 IlluminateDatabaseQueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

博客对应视频位置:laravel疑难问题
https://fanrenyi.com/lesson/9

转自或参考:【laravel5.6】 IlluminateDatabaseQueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
https://www.cnblogs.com/richerdyoung/p/9167078.html

在进行数据迁移时候报错: 特殊字段太长报错,

php artisan migrate

现在utf8mb4包括存储emojis支持。如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情。

当你试着在一些MariaDB或者一些老版本的的MySQL上运行 migrations 命令时,你可能会碰到下面这个错误:

错误如下:

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

解决办法:

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

文件路径: /app/providers/AppServiceProvider.php,加上绿色部分即可

<?php
namespaceAppProviders;
use IlluminateSupportServiceProvider;
use IlluminateSupportFacadesSchema;
classAppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    publicfunction boot()
    {
        //
        Schema::defaultStringLength(191);
    }
    /**
     * Register any application services.
     *
     * @return void
     */
    publicfunction register()
    {
        //
}
}

三、补充知识

1、service provides(服务提供者)

Service Providers (服务提供者)Laravel「引导」过程的核心。这个「引导」过程可以理解成「电脑从按下开机按钮到完全进入桌面」这段时间系统干的事。

Service Provider有两个重要的方法:

register() :注册服务

boot() :引导服务

Laravel在「引导」过程中干了两件重要的事:

  1. 通过Service Providerregister()方法注册「绑定」,比如kernel文件中的
  2. 所有Servier Providerregister()都执行完之后,再通过它们boot()方法,干一些别的事。

2、Schema是什么

Laravel 的Schema门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、平滑的API。

免责声明:文章转载自《IlluminateDatabaseQueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mybatis查询异常-Error querying database. Cause: java.lang.ClassCastException: org.apache.ibatis.executor.ExecutionPlaceholder cannot be cast to java.util.ListRedis 的安装与使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

故障排查:vsftpd无法用浏览器访问

CentOS6上设置的ftp服务器突然无法使用浏览器访问,但可以使用xftp等工具正常访问。据推测,阿里云的安全组设置之前已经过修改,这可能与1)修改vsftpd的配置,在被动模式下手动指定一个随机连接端口,并添加以下内容:passv_min_port=50000pasv_max_port=60000 02)如果只打开端口20和21,设置阿里云安全组控制端口...

Cesium快速上手10-Viewer Entities组合

src=Box.html&label=Geometriesimage.pngbox就是立方体cylinder是圆锥圆柱varviewer=newCesium.Viewer;varblueBox=viewer.entities.add;varredBox=viewer.entities.add;varoutlineOnly=viewer.entitie...

凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统

Tid=9074&fid=12安装前准备下载最新的PhoenixOSIO安装映像,并将其刻录到USB闪存驱动器;如果使用Windows操作系统,建议使用UltraISO刻录。下载地址:http://www.phoenixos.com/download_x86开始安装。1.重新启动机器,从启动选项中选择USB闪存磁盘启动,然后选择“Installati...

Kafka监控工具——Kafka-Eagle

Kafka监控工具官网https://www.kafka-eagle.org/是什么KafkaEagle是一款用于监控和管理ApacheKafka的完全开源系统,目前托管在Github,由笔者和一些开源爱好者共同维护。而且,在使用消费者API时,尽量#客户端KafkaAPI版本和Kafka服务端的版本保持#一致性。...

WPF 制作圆角按钮

在程序对应坐置插入以下代码,或是先拖一个按钮控件到窗体中,再替换对应的代码。...

java 服务接口API限流 Rate Limit

服务接口的流量控制策略:分流、降级、流量限制等。2)使用Reids的列表结构,而不是incr命令1FUNCTIONLIMIT_API_CALLL2current=LLEN3IFcurrent˃10THEN4ERROR“toomanyrequestsperssecond”5ELSE6IFEXIST==FALSE7MULTI8RPUSH9EXPIRE10EXEC...