我已经在我之前的表格中插入了一个名为im_useless
的列,我不再需要了。
这是我的架构(文件名: 2017_02_27_120313_units.php ):
public function up()
{
Schema::create('units', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description');
$table->string('im_useless');
$table->timestamps();
});
}
现在我尝试删除它,所以我在down()
函数中使用了这段代码:
public function down()
{
Schema::dropColumn('im_useless');
}
新架构:
public function up()
{
Schema::create('units', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description');
$table->timestamps();
});
}
现在我必须回滚然后再次迁移。我尝试仅回滚该特定迁移文件,执行php artisan help migrate:rollback
我发现有一个--path
选项。
所以我试图像这样回滚特定的迁移:
php artisan migrate:rollback --path=2017_02_27_120313_units.php
但我得到Nothing to rollback
如何删除该特定列而不必回滚任何其他迁移?
更新
我想我必须像这样更改path
:
php artisan migrate:rollback --path=database/migrations/2017_02_27_120313_units.php
...因为我的php shell是在项目根文件夹中打开的?
但是我仍然得到Nothing to rollback
我也试过php artisan migrate --path=2017_02_27_120313_units.php
和php artisan migrate --path=database/migrate/2017_02_27_120313_units.php
...并获取Nothing to migrate
更新2
我认为我搞砸了我的迁移表,因为我删除了down()
函数中的代码,并且表从未被删除过。
https://stackoverflow.com/a/26077506/4684797
答案 0 :(得分:2)
回滚功能旨在让您在迁移之前恢复到您拥有的版本,以防部署时出现问题。如果要删除不再需要的特定列,则应将其视为新迁移,并将该列放在up()方法中。
答案 1 :(得分:0)
如果您的laravel版本> = 5.3,则可以像软件包一样简单地添加迁移路径。
https://laravel.com/docs/5.3/packages#migrations
只需将此代码放入您的AppServiceProvider引导方法中即可:
$this->loadMigrationsFrom(__DIR__.'/path/to/migrations');
此外,如果您要递归包含子文件夹,则可以尝试使用“ / path / to / migrations / ** / *”,但是我不确定这是否适用于较早的laravel版本。
答案 2 :(得分:-1)
运行composer dump-autoload并重试