当前位置:首页 > CMS教程 > 其它CMS > 列表

解决在laravel中auth建立时候遇到的问题

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-05 11:40:08 浏览: 评论:0 

今天小编就为大家分享一篇解决在laravel中auth建立时候遇到的问题,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

当你使用auth做用户登录注册的时候,会很方便,但是你在做数据库迁移的时候可能会遇到一个问题

  1. $ php artisan migrate 
  2. Migration table created successfully. 
  3.  
  4.  [Illuminate\Database\QueryException] 
  5.  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t 
  6.  oo long; max key length is 767 bytes (SQL: alter table `users` add unique ` 
  7.  users_email_unique`(`email`)) 
  8.  
  9.  [PDOException] 
  10.  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t 
  11.  oo long; max key length is 767 bytes 

不要慌,这里说的是你的数据库迁移完成了,蛋疼的是这里有一个报错,会使你在接下来项目中后面的迁移操作继续报错。

  1. [Illuminate\Database\QueryException] 
  2. SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre 
  3. ady exists (SQL: create table `users` (`id` int unsigned not null auto_incr 
  4. ement primary key, `name` varchar(191) not null, `email` varchar(191) not n 
  5. ull, `password` varchar(191) not null, `remember_token` varchar(100) null, 
  6. `created_at` timestamp null, `updated_at` timestamp null) default character 
  7. set utf8mb4 collate utf8mb4_unicode_ci) 
  8.  
  9. [PDOException] 
  10. SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' alre 
  11. ady exists 

解决方案如下:

索引长度 & MySQL / MariaDB#

Laravel 默认使用 utf8mb4 字符,包括支持在数据库存储「表情」。如果你正在运行的 MySQL release 版本低于5.7.7 或 MariaDB release 版本低于10.2.2 ,为了MySQL为它们创建索引,你可能需要手动配置迁移生成的默认字符串长度,你可以通过调用

项目/app/Providers/AppServiceProvider.php 中的 Schema::defaultStringLength 方法来配置它:

  1. use Illuminate\Support\Facades\Schema; 
  2.    
  3. /** 
  4.  * 引导任何应用程序服务。 
  5.  * 
  6.  * @return void 
  7.  */ 
  8. public function boot() 
  9.  Schema::defaultStringLength(191); 

或者你可以为数据库开启 innodb_large_prefix 选项,有关如何正确开启此选项的说明请查阅数据库文档。

Tags: laravel auth

分享到: