Git 克隆 Laravel 项目失败 php artisan 迁移和 php artisan db:seed

Git Cloned Laravel Project failing at php artisan migrate and php artisan db:seed

我git 为用Laravel/PHP 编写的项目克隆了一个存储库。我能够在本地获得大部分内容 运行,并且能够创建初始迁移文件夹,但我被困在播种和 table 创建点 (?)。我一直收到以下错误:

In Connection.php line 664:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lara_dev.users' doesn't exist (SQL: alter table `users` add `avatar` varchar(255   
  ) null default 'users/default.png' after `email`, add `role_id` int null after `id`)


In PDOStatement.php line 144:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lara_dev.users' doesn't exist  


In PDOStatement.php line 142:

  SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lara_dev.users' doesn't exist  

*lara_dev 是本地数据库的名称。在 git 克隆项目后,我直接在我的 MySQL 本地客户端中创建了它,它不是由在终端中执行的任何命令创建的。

另外:

database文件夹里面有三个文件夹:factory、migrations、seeds。据我所见和理解,里面的文件配置正确,应该可以毫无问题地创建数据库,而不必编辑这些文件。

我没有 WAMP 服务器,我只是通过 'php artisan serve'.

命令使用 php 的内置服务器

到目前为止我尝试过但没有奏效的解决方案:

  1. php artisan cache:clear //清除缓存,仅此而已。

  2. php artisan migrate:fresh --seed //同样的错误,但也会删除之前存在的任何 tables。

  3. php artisan migrate:refresh --seed // 给出 'nothing to rollback' 消息。

  4. php artisan db:seed //同样的错误

我无法在 Stack 上找到任何适合我的情况的解决方案。任何帮助将不胜感激。

请考虑到我是 PHP 的新手,但不是编码的新手,而且我已经能够得到大部分东西 运行,我只是被困在这里.如果我可以提供更多信息,请告诉我。提前致谢!

某些迁移失败,因为它正在尝试 alter 尚未创建的用户 table。

确保迁移的顺序正确,因为它们是按字母顺序执行的。

看来,您的迁移顺序有问题。它试图在创建之前更改 table。

Laravel 迁移将包含一个时间戳,允许框架确定迁移的顺序

能否将 alter users table 迁移文件名更改为 2020_04_24_062125_alter_users_table.php 并重试?

Daniyal Javani 在上面的评论中给了我正确的答案。我将该文件 https://github.com/laravel/laravel/blob/master/database/migrations/2014_10_12_000000_create_users_table.php 添加到我的迁移文件夹中。它创建了我所缺少的 table 用户,然后 运行 'php artisan migrate' 起作用了。

我想我明白你的问题出在哪里了。在 Laravel 框架中,我们有在 Laravel/database/migrations 文件夹中定义的迁移。他们有特定的名字。

它们的名字取决于它们的创建日期,并且以相同的方式排列并以相同的方式执行。

例如:

2014_10_12_000000_create_users_table.php

2014_10_12_000001_alter_users_table.php

create_users_table.php 运行 首先是 alter_users_table.php 运行s.

您的问题:

您在迁移中有一部分代码需要针对用户 table 进行更改,但您的用户 table 尚未创建。所以你有两种方法:

1-更改 (date_timestamp)_create_users_table.php 的名称,使创建日期早于更改迁移日期

2-更改迁移的名称,其中包含更改用户 table 的代码部分,使得日期在用户创建日期之后 table。

最后运行php artisan migrate:fresh