• 【laravel5.4】php artisan migrate报错:Specified key was too long; max key length is 767 bytes


    1、原因:在进行 迁移文件生成时,程序并未给varchar类型字段设置 合适的长度,导致报错。

    2、解决办法:找到database/ 目标迁移文件,修改其中类型为string的字段长度,建议不要超过255,否则报错 【然后再次运行php artisan migrate 即可成功】

     示例:

    MySQL: ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    
    
    今天测试遇到了这样的问题:
    
     
    
    MySQL>  use test; create table test(a varchar(512) primary key, b varchar(1024));
    Database changed
    ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    
     
    
    相关测试:
    
    http://kklinux.com/bbs/archiver/tid-2543.html
    
     
    
    drop table if exists test; 
    create table test(test varchar(767) primary key)charset=latin5; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(768) primary key)charset=latin5; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 
    
    drop table if exists test; 
    create table test(test varchar(383) primary key)charset=GBK; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(384) primary key)charset=GBK; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 
    
    drop table if exists test; 
    create table test(test varchar(255) primary key)charset=UTF8; 
    -- 成功 
    
    drop table if exists test; 
    create table test(test varchar(256) primary key)charset=UTF8; 
    -- 错误  
    -- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
    
     
    
    原因:
    
    MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段 
    而 GBK是双字节的,UTF-8是三字节的。
  • 相关阅读:
    call 与 apply
    react-router
    阻止IOS上的弹性滚动
    React规范
    sessionStorage 、localStorage 和 cookie 对比区分
    显式Intent 和隐式 Intent 的区别
    Activity之间传递数据的方式及常见问题总结
    Android横竖屏切换生命周期变化
    String、StringBuilder、StringBuffer 区别
    内存泄漏
  • 原文地址:https://www.cnblogs.com/xuzhengzong/p/8796136.html
Copyright © 2020-2023  润新知