PHP Artisan 迁移失败

PHP Artisan migrate fails

这个问题已经解决了。在下方查看我的post

我刚刚安装了一个新的 Laravel 5.4 项目。

因为我正在学习 Jeffrey Way 的 Laravel 从零开始的教程,所以当我想要迁移我的数据库时遇到以下错误:

  [Illuminate\Database\QueryException]
  SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already
  exists (SQL: create table `users` (`id` int unsigned not null auto_increment pr
  imary key, `name` varchar(255) not null, `email` varchar(255) not null, `passwo
  rd` varchar(255) not null, `remember_token` varchar(100) null, `created_at` tim
  estamp 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' already
  exists

就像我说的,这是一个全新的安装,我不知道如何解决这个问题。你们有人知道吗?

提前致谢!

@ian,

我按照您给我的说明进行操作,但现在出现此错误:

    [Illuminate\Database\QueryException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l
  ong; max key length is 767 bytes (SQL: alter table `users` add unique `users_em
  ail_unique`(`email`))

-

  [PDOException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l
  ong; max key length is 767 bytes

如何解决这个问题:

我就是这样做的,感谢伊恩:

  1. 删除数据库并创建一个新的
  2. 使用新的数据库凭据更新 env 文件
  3. 前往App->Providers->AppServiceProvider.php
  4. 开机功能添加Schema::defaultStringLength(191);
  5. 确保在文件顶部添加 use Illuminate\Support\Facades\Schema;
  6. 迁移数据库,问题解决!

在执行 php artisan migrate 时,数据库不能具有与迁移中相同的 table 名称(除非您只是在 table 中添加另一个字段)

您必须删除所有 table(丢弃),然后再次 运行 php artisan migrate

您在密钥长度方面遇到的第二个错误是 Laravel 5.4 中的新更改。使用utf8mb4编码时,varchar字段最多只能有194个。

您将需要开始迁移,更改每次出现的 string() 的大小并添加一个长度。您可以选择将数据库编码改回 UTF8,但是 utf8mb4 允许使用存储表情符号。

更多信息可以参考https://laravel-news.com/laravel-5-4-key-too-long-error