我为一个用Laravel/PHP编写的项目克隆了一个存储库。我能够让大多数事情在本地运行,并且能够创建初始迁移文件夹,但我被困在种子设定和表创建点(?(。我不断得到以下错误:
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本地客户端中创建了它,它不是由终端中执行的任何命令创建的。
还有:
数据库文件夹中有三个文件夹:工厂、迁移和种子。据我所知,里面的文件配置正确,创建数据库时应该没有问题,也不必编辑这些文件。
我没有WAMP服务器,我只是通过命令"php artisan serve"使用php的内置服务器。
到目前为止,我尝试过的解决方案都没有奏效:
php手工缓存:清除//清除缓存,但仅此而已。
php artisan migrate:fresh--seed//同样的错误,但也会删除以前存在的任何表。
php artisan migrate:refresh--seed//给出"nothingtorollback"消息。
php artisan db:seed//相同的错误
我在Stack上找不到任何适合我情况的解决方案。如有任何帮助,我们将不胜感激。
请考虑到我对PHP相对陌生,但对编码还不熟悉,而且我大部分时间都能运行,我只是停留在这里。如果我能提供更多信息,请告诉我。提前感谢!
某些迁移失败,因为它试图alter
用户表,而该表尚未创建。
请确保迁移的顺序正确,因为它们是按字母顺序执行的。
您的迁移顺序似乎有问题。它试图在创建表之前更改它。
Laravel迁移将包含一个时间戳,该时间戳允许框架确定迁移的顺序
能否将alter users表迁移文件名更改为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,到我的迁移文件夹。它创建了我丢失的users表,然后运行"php-artisan-migrate"就可以了。
我想我知道你的问题在哪里。在Laravel框架中,我们有在Laravel/database/migrations
文件夹中定义的迁移。他们有特殊的名字。
他们的名字取决于他们创作的日期,以同样的方式排列和执行。
例如:
2014_10_12_0000_create_users_table.php
和
2014_10_12_0001_alter_users_table.php
首先运行create_users_table.php
,然后运行alter_users_table.php
。
您的问题:
迁移中有一部分代码需要在users表中进行更改,但尚未创建users表。所以你有两种方法:
1-更改(date_timestamp)_create_users_table.php
的名称,使创建日期在更改迁移日期之前
2-更改迁移的名称,该名称包含更改用户表的代码部分,以使日期在创建用户表的日期之后。
最后运行php artisan migrate:fresh