使用Laravel 5,我已经完成了一些数据库迁移,并意识到我不再需要使用第一轮迁移创建的表。我想摆脱这个表以避免将来出现任何混淆,但显然我还需要阻止重新创建表,如果我重置所有迁移。
我认为最好只删除迁移,所以如果刷新表根本就不会创建。然后可能只是手动删除表。
我的数据库中确实有数据,所以我宁愿不回滚和刷新所有内容,如果我刷新迁移,删除表并将其从重新创建中删除它的正确方法是什么?
答案 0 :(得分:1)
您可以创建一个具有此功能的新迁移
public function up()
{
Schema::table('table_name', function (Blueprint $table) {
$table->drop();
});
}
答案 1 :(得分:0)
在我的脑海中,我看到了两种可以实现此目的的方法。
方法1很长,如果你有50多个表,那就太烦人了。 方法2是干净有效且侵入性较小的方法(我选择了这个)。
方法1
以下是我将采取的解决问题的步骤:
导出数据库表和数据,以便在出现问题时备份所有内容。
进入您的迁移目录,找到特定于该表的文件
在公共函数up()内部插入:
Schema::table('table_name', function (Blueprint $table) {
$table->drop();
});
进入迁移文件中的每个表并注释掉以下两种方法:
public function up()
和
public function down()
打开控制台并进入laravel应用程序所在的目录
运行以下命令:
php artisan migrate
通过运行上面的命令,表drop方法将激活,所有其他表应保持不变(如果你没有任何外键约束阻止数据库删除表)。 / p>
如果您在该表上有任何外键约束,请将其删除(因为您计划删除该表)。
方法2
在database \ migrations目录中创建一个文件夹,并将其命名为“passive_rollback”
只需运行以下命令:
php artisan migrate:rollback my_table_name_here --path=database/migrations/passive_rollback
上面的步骤将回滚位于您指定路径的单个表。此方法还可用于数据库版本控制和按相关性或部分组织架构。通过laravel,您可以更好地控制您希望使用的数据库部分!