laravel 表迁移报错[通俗易懂]

laravel 表迁移报错[通俗易懂]laravel 表迁移报错

大家好,又见面了,我是你们的朋友全栈君。

error infomation:

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 `use
rs` add unique `users_email_unique`(`email`))

  at D:\WWW\test\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes")
      D:\WWW\test\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  2   PDOStatement::execute()
      D:\WWW\test\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  Please use the argument -v to see more details.

解决:
索引长度 & Mysql / MariaDB
Laravel 默认使用 utf8mb4 编码,它支持在数据库中储存 emojis 。如果你是在版本低于 5.7.7 的 MySQL 或者版本低于 10.2.2 的 MariaDB 上创建索引,那你就需要手动配置数据库迁移的默认字符串长度。
即在 AppServiceProvider 中调用 Schema::defaultStringLength 方法来配置它:

use Illuminate\Support\Facades\Schema;

/** * 引导任何应用程序服务 * * @return void */
 public function boot()
 { 
   
     Schema::defaultStringLength(191);
 }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105807.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring Security身份认证之UserDetailsService[通俗易懂]

    Spring Security身份认证之UserDetailsService[通俗易懂]        之前我们采用了配置文件的方式从数据库中读取用户进行登录。虽然该方式的灵活性相较于静态账号密码的方式灵活了许多,但是将数据库的结构暴露在明显的位置上,绝对不是一个明智的做法。本文通过Java代码实现UserDetailsService接口来实现身份认证。  1.1UserDetailsService在身份认证中的作用  SpringSecurity中进行身份验证的是Aut…

    2022年10月30日
  • XGBoost算法梳理[通俗易懂]

    XGBoost算法梳理[通俗易懂]XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。讲解其原理前,先讲解一下CART回归树。一、CART回归树CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征值进…

  • @RequestParam注解使用

    @RequestParam注解使用1、作用:@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)2、语法:语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)value:参数名required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报…

  • pycharm中文版怎么配置python环境_python怎么加编译器

    pycharm中文版怎么配置python环境_python怎么加编译器python环境配置:1.系统自带的python.exe或者自己下载的2.下载anaconda自带的python.exepycharm中如何使用环境:选择File->setting->PythonInterpreter->点右边的设置标志Add->然后可以选择虚拟环境,这个是选择系统自带的python.exe或者选择Conda环境,有新建环境和已存在的环境,点新建环境可以直接处男建一个conda环境,python版本也可以指定,自动下载。已存在的环境的话就是

  • zabbix监控redis信息

    zabbix监控redis信息了解Redis的info要获得Redis的当前情况,使用info命令即可。具体用法:redis-cli-h127.0.0.1-p6379-aredis_passwdinfo[参数]。针对不同的参数就会看到具体的数字,如果没有带参数,那么就会把默认情况写出来,如果带上all参数,那么就会把所有情况都写出来。比如:redis-cli-h127.0.0.1-p6379-aredis_passwdinfoserver,就会看到redis关于server的一些数据,如下:可以看

  • 【Custom Mutator Fuzz】Libprotobuf + AFLapp Custom Mutator[通俗易懂]

    【Custom Mutator Fuzz】Libprotobuf + AFLapp Custom Mutator[通俗易懂]这篇文章主要是在libprotobuf-mutator_fuzzing_learning开源模糊测试练习项目第4个练习的基础上进行详细讲解,主要内容为通过libprotobuf-mutator为AFL++提供自定义protobuf结构突变。练习和写作的过程中也是踩了不少的坑,文章末尾会有我遇到的全部问题及解决办法

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号