入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

关于laravel中auth建立时候的问题

创建时间:2017-05-29 投稿人: 浏览次数:822

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

$ php artisan migrate
Migration table created successfully.


  [IlluminateDatabaseQueryException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
  oo long; max key length is 767 bytes (SQL: alter table `users` add unique `
  users_email_unique`(`email`))

  [PDOException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
  oo long; max key length is 767 bytes


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

 [IlluminateDatabaseQueryException]
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table "users" alre
  ady exists (SQL: create table `users` (`id` int unsigned not null auto_incr
  ement primary key, `name` varchar(191) not null, `email` varchar(191) not n
  ull, `password` varchar(191) not null, `remember_token` varchar(100) null,
  `created_at` timestamp null, `updated_at` timestamp null) default character
   set utf8mb4 collate utf8mb4_unicode_ci)

  [PDOException]
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table "users" alre
  ady exists

解决方案如下:

索引长度 & MySQL / MariaDB#

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

use IlluminateSupportFacadesSchema;

/**
 * 引导任何应用程序服务。
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

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


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。