【问题标题】:I can not migrate tables again我无法再次迁移表
【发布时间】:2018-06-08 01:54:23
【问题描述】:

我删除了数据库中的所有表,但我的错误是:

table.questions 存在

所以我不能迁移它们,它是否也依赖于其他东西?

【问题讨论】:

  • 清空数据库并尝试composer dumpautoload然后尝试再次迁移

标签: laravel laravel-5 laravel-artisan migrate laravel-migrations


【解决方案1】:

你可以运行:

php artisan migrate:refresh

回滚所有表(包括迁移表)并重新创建所有内容。

【讨论】:

  • @amini.swallow 这个答案对你有帮助吗?
  • 不,我在这里回答是因为 AuthServiceProvider.php 。我写了一个中间件。请在这里检查我的答案。
【解决方案2】:

如果你真的从数据库中删除所有表是不可能的。

确保您确实删除了所有表,包括 migrations 表。

通常,当您想要恢复所有迁移时,您应该运行:

php artisan migrate:reset

如果你还没有这样做,假设你正在运行 Laravel 5.5,你可以运行:

php artisan migrate:fresh

我建议您阅读整个Migrations documentation 以了解它们的工作原理以及您应该如何创建它们。事实上,您不应该手动删除表而只运​​行:

php artisan migrate:rollback

要回滚之前运行的迁移,或者正如我已经说过的,您可以运行一个之前提到的命令来回滚或回滚并再次运行您的迁移。

【讨论】:

  • @amini.swallow 您确定您的应用程序正在使用您认为它正在使用的数据库吗?运行 php artisan migrate:status 以查看运行了哪些迁移,同时查看 .env 以查看数据库名称并运行 php artisan config:clear 以确保没有缓存旧的数据库连接。
  • 是的,我确定
  • 因此,如果您确实拥有干净的数据库,那么您就不可能收到错误消息。唯一的机会是在 2 次或更多迁移中尝试创建同一个表。验证您是否在不止一次迁移中没有Schema::create('questions'
  • 找到了,是中间件的原因
【解决方案3】:

您收到此错误是因为您已经在 DB 中拥有此表。您需要在每次迁移的down() 方法中删除一个表,并使用php artisan migrate:rollback 命令删除最后一批执行的迁移。

在 5.5 中,如果您不在 down() 方法中删除表,您也可以使用 php artisan migrate:fresh

https://laravel.com/docs/5.5/migrations#rolling-back-migrations

或者您可以手动重新创建数据库并运行php artisan migrate 命令。

【讨论】:

  • 不,我没有在数据库中,我也删除了我的数据库并重新创建了它
【解决方案4】:

我找到了,我在问题表的引导中有一个中间件并添加了这个:

   if(\Schema::hasTable('questions')) {
       ....
     }

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 2013-02-26
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多