mysql指定的密钥太长,无法理解原因?

时间:2018-11-05 16:30:42

标签: mysql laravel

  

语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节(SQL:alter table users添加唯一的users_email_uniqueemail))

我无缘无故地在所有操作中弹出错误...我从字面上看是使数据库具有默认值,并且弹出...复制100%的工作代码会弹出..即使它被原因修复了。就像再次创建具有相同详细信息的数据库..我现在真的很无聊,因为它像15个不同的项目一样弹出...不知道为什么会弹出甚至git固定...只是制作唯一键或主要的,有时会弹出,而其他的不会! ...重新安装Apache,例如获得最新版本的5次..仍然会弹出100%的工作代码 可能会弹出的逻辑原因是什么?

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

  
    

Illuminate \ Database \ QueryException:SQLSTATE [42S01]:基本表或视图已存在:1050表'users'已存在(SQL:create     表usersid int unsigned not null auto_increment主键,     name varchar(255)不为空,email varchar(255)不为空,     email_verified_at时间戳为null,password varchar(255)不为null,     remember_token varchar(100)为空,created_at时间戳为空,     updated_at时间戳为null)默认字符集utf8mb4整理     'utf8mb4_unicode_ci')

  
     在

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

     
    

664 |抛出新的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

     

Blockquote

1 个答案:

答案 0 :(得分:2)

将此代码添加到app/Providers/AppServiceProvider.php文件中:

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

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