Eu criei uma tabela usando a migração como esta:
public function up()
{
Schema::create('despatch_discrepancies', function($table) {
$table->increments('id')->unsigned();
$table->integer('pick_id')->unsigned();
$table->foreign('pick_id')->references('id')->on('picks');
$table->integer('pick_detail_id')->unsigned();
$table->foreign('pick_detail_id')->references('id')->on('pick_details');
$table->integer('original_qty')->unsigned();
$table->integer('shipped_qty')->unsigned();
});
}
public function down()
{
Schema::drop('despatch_discrepancies');
}
Eu preciso mudar esta tabela e descartar a referência de chave estrangeira e coluna pick_detail_ide adicionar uma nova coluna varchar chamada skuapós pick_idcoluna.
Então, criei outra migração, que se parece com isto:
public function up()
{
Schema::table('despatch_discrepancies', function($table)
{
$table->dropForeign('pick_detail_id');
$table->dropColumn('pick_detail_id');
$table->string('sku', 20)->after('pick_id');
});
}
public function down()
{
Schema::table('despatch_discrepancies', function($table)
{
$table->integer('pick_detail_id')->unsigned();
$table->foreign('pick_detail_id')->references('id')->on('pick_details');
$table->dropColumn('sku');
});
}
Quando executo essa migração, recebo o seguinte erro:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Erro geral: 1025 Erro na renomeação de './dev_iwms_reboot/despatch_discrepancies' para './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152) (tabela SQL: alterdespatch_discrepancieslargar chave estrangeira pick_detail_id)[PDOException]
SQLSTATE [HY000]: Erro geral: 1025 Erro na renomeação de './dev_iwms_reboot/despatch_discrepancies' para './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152)
Quando tento reverter essa migração executando o php artisan migrate:rollbackcomando, recebo uma Rolled backmensagem, mas na verdade não está fazendo nada no banco de dados.
Alguma ideia do que pode estar errado? Como você elimina uma coluna que tem uma referência de chave estrangeira?