【发布时间】:2018-06-08 01:54:23
【问题描述】:
我删除了数据库中的所有表,但我的错误是:
table.questions 存在
所以我不能迁移它们,它是否也依赖于其他东西?
【问题讨论】:
-
清空数据库并尝试
composer dumpautoload然后尝试再次迁移
标签: laravel laravel-5 laravel-artisan migrate laravel-migrations
我删除了数据库中的所有表,但我的错误是:
table.questions 存在
所以我不能迁移它们,它是否也依赖于其他东西?
【问题讨论】:
composer dumpautoload然后尝试再次迁移
标签: laravel laravel-5 laravel-artisan migrate laravel-migrations
你可以运行:
php artisan migrate:refresh
回滚所有表(包括迁移表)并重新创建所有内容。
【讨论】:
如果你真的从数据库中删除所有表是不可能的。
确保您确实删除了所有表,包括 migrations 表。
通常,当您想要恢复所有迁移时,您应该运行:
php artisan migrate:reset
如果你还没有这样做,假设你正在运行 Laravel 5.5,你可以运行:
php artisan migrate:fresh
我建议您阅读整个Migrations documentation 以了解它们的工作原理以及您应该如何创建它们。事实上,您不应该手动删除表而只运行:
php artisan migrate:rollback
要回滚之前运行的迁移,或者正如我已经说过的,您可以运行一个之前提到的命令来回滚或回滚并再次运行您的迁移。
【讨论】:
php artisan migrate:status 以查看运行了哪些迁移,同时查看 .env 以查看数据库名称并运行 php artisan config:clear 以确保没有缓存旧的数据库连接。
Schema::create('questions'
您收到此错误是因为您已经在 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 命令。
【讨论】:
我找到了,我在问题表的引导中有一个中间件并添加了这个:
if(\Schema::hasTable('questions')) {
....
}
【讨论】: