mysql - Mysql-Specified key was too long-不明白为什么?
问题描述
语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节(SQL:alter table
users
add uniqueusers_email_unique
(
我所做的每一件事都会无缘无故地弹出该错误...我确实创建了具有默认值的数据库并且它弹出...复制100%的工作代码它会弹出..即使它得到修复也是有原因的..就像创建相同的数据库再次具有相同的详细信息..我现在真的很无聊,因为它在 15 个不同的项目中弹出...无法理解为什么它会弹出甚至 git 修复...只是制作唯一的键或主键和它有时会弹出,而其他则不会!...重新安装 Apache 就像 5 次获得最新版本 .. 仍然弹出 100% 工作代码它可能弹出的逻辑原因是什么?
我所做的只是进行身份验证并将其迁移到数据库(laravel) 错误:
Illuminate\Database\QueryException:SQLSTATE[42S01]:基表或视图已存在:1050 表“用户”已存在(SQL:创建表
users
(id
int unsigned not null auto_increment 主键,name
varchar(255)非 null,email_verified_at
timestamp null,password
varchar(255) not null,remember_token
varchar(100) null,created_at
timestamp null,updated_at
timestamp null) 默认字符集 utf8mb4 collate '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
块引用
解决方案
在文件中添加此代码app/Providers/AppServiceProvider.php
:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
您需要从数据库中删除(如果有)用户表、密码重置表并从迁移表中删除用户和密码重置条目,然后在删除旧表后运行php artisan migrate
命令
推荐阅读
- operating-system - 删除一个并创建新的 MBR 分区排列
- ansible - ansible如何从另一个角色加载变量,而不执行它?
- java - 尝试在 Maven 插件中执行 jar
- javascript - Javascript:改进具有嵌套 foreach 循环的代码
- java - 如何知道使用 JavaParser 读取或修改变量
- ruby-on-rails - 从参数化查询中删除引号
- linux - 不同端口上的 softROCE RDMA 相同设备
- spring-webflux - 带有 Spring 反应式 redis StreamReceiver 的随机 RedisConnectionException
- java - Mongo Repository 在嵌套的 HashMap 中按值查找对象
- android - 如何将在 Flutter 上查看的 pdf 文件保存到设备的本地存储中?