mysql - "Migrate reset"当代码有错误时不工作

标签 mysql laravel database-migration laravel-5.8

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

use SoftDeletes;

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

artisan migrate:refresh --seed

artisan migrate:reset

artisan migrate:fresh

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

Illuminate\Database\QueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.deleted_at' in 'where clause' (SQL: select exists(select * from users where email = user@gmail.com and users.deleted_at is null) as exists)

我不明白。如果我要恢复迁移,artisan 应该只在我的 User 类上调用 down() 方法,即:

public function down()
{
    Schema::dropIfExists('users');
}

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

附言我正在使用 docker-compose 来运行 php、mysql、artisan、composer、nginx 和 nodejs - 如果这很重要的话。

最佳答案

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

您可以阅读the chat here 。从 AppServiceProvider 中删除 artisan 调用解决了这个问题

关于mysql - "Migrate reset"当代码有错误时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288022/

相关文章:

php - codeigniter 中的查询给出错误

asp.net-mvc - 全栈Web应用程序框架的定义是什么

laravel - 外观 getFacadeAccessor() 方法如何工作?

mysql - 拉维尔 : How can I change default indexing key length in morph table

PostgreSQL:尝试访问数组中的字段时出现语法错误

mysql - 比较大型 MySQL 表

mysql - 时间戳给出错误的结果

php - laravel 加入仅限制 2 行

mysql - 如何创建可以将数据库迁移到另一个规范化数据库的脚本

mysql - 如何在使用 where 子句时仅查找一列中的重复值?