首页 > 解决方案 > Mysql-Specified key was too long-不明白为什么?

问题描述

语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节(SQL:alter table usersadd unique users_email_unique( email))

我所做的每一件事都会无缘无故地弹出该错误...我确实创建了具有默认值的数据库并且它弹出...复制100%的工作代码它会弹出..即使它得到修复也是有原因的..就像创建相同的数据库再次具有相同的详细信息..我现在真的很无聊,因为它在 15 个不同的项目中弹出...无法理解为什么它会弹出甚至 git 修复...只是制作唯一的键或主键和它有时会弹出,而其他则不会!...重新安装 Apache 就像 5 次获得最新版本 .. 仍然弹出 100% 工作代码它可能弹出的逻辑原因是什么?

我所做的只是进行身份验证并将其迁移到数据库(laravel) 错误:

Illuminate\Database\QueryException:SQLSTATE[42S01]:基表或视图已存在:1050 表“用户”已存在(SQL:创建表usersidint unsigned not null auto_increment 主键, namevarchar(255)非 null,emailvarchar(255) not null, email_verified_attimestamp null, passwordvarchar(255) not null, remember_tokenvarchar(100) null, created_attimestamp null, updated_attimestamp null) 默认字符集 utf8mb4 collat​​e 'utf8mb4_unicode_ci')

在 C:\USER\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664 660| // 如果尝试运行查询时发生异常,我们将格式化错误 661| // 包含与 SQL 的绑定的消息,这将使该异常成为 662| // 对开发人员更有帮助,而不仅仅是数据库的错误。663| 捕获(异常 $e){

664| throw new QueryException(665| $query, $this->prepareBindings($bindings), $e 666|); 667| } 668|

异常跟踪:

1 PDOException::("SQLSTATE[42S01]: 基表或视图已经存在:1050 表'用户'已经存在") C:\USER\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

2 PDOStatement::execute() C:\USER\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

块引用

标签: mysqllaravel

解决方案


在文件中添加此代码app/Providers/AppServiceProvider.php

use Illuminate\Support\Facades\Schema;
public function boot()
{
    Schema::defaultStringLength(191);
}

您需要从数据库中删除(如果有)用户表、密码重置表并从迁移表中删除用户和密码重置条目,然后在删除旧表后运行php artisan migrate命令


推荐阅读