PHP Artisan迁移失败

时间:2017-03-08 10:44:00

标签: laravel composer-php migrate

此问题已解决。查看我的帖子

我刚刚安装了一个新的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

如何解决此问题:

这就是我这样做的原因,感谢Ian:

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

2 个答案:

答案 0 :(得分:1)

关于密钥长度的第二个错误是Laravel 5.4的新变化。使用utf8mb4编码时,varchar字段最多只能为194。

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

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

答案 1 :(得分:0)

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

您必须删除所有表格(删除),然后再次运行php artisan migrate