代码错误时“迁移重置”不起作用

时间:2019-10-08 14:05:34

标签: mysql laravel database-migration laravel-5.8

在基本的Laravel应用程序中,我在User类中添加了:

  

使用SoftDeletes;

应用程序不再起作用,因为MySql数据库的User表中没有“ deleted_at”列。我正在尝试通过删除所有表并重新创建它们(或通过删除所有表)来添加此列:

  

工匠迁移:刷新--seed

     

工匠迁移:重置

     

工匠迁移:新鲜

在所有情况下我都会收到错误:

  

Illuminate \ Database \ QueryException:SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ users.deleted_at”(SQL:select存在(select * from users其中{{1} } = user@gmail.com和emailusers为null),以deleted_at

我不明白。如果我要恢复迁移,则工匠只能在我的User类上调用down()方法:

exists

如果未找到列,则删除表应该不会失败。

P.S。我正在使用docker-compose运行php,mysql,artisan,composer,nginx和nodejs-如果可能的话。

2 个答案:

答案 0 :(得分:1)

最初给出的答案是错误的,因为问题在某种程度上也是不正确的,在聊天中讨论后,我们发现作者也在AppServiceProvider中进行了迁移,这阻止了通过CLI进行实际迁移。

您可以阅读the chat here。从AppServiceProvider中删除工匠调用可以解决此问题

答案 1 :(得分:1)

您是否还在迁移中添加了软删除?

public function up()
{
    Schema::table('users', function(Blueprint $table)
    {
        $table->softDeletes();
        ...
    });
}