Creé una tabla usando una migración 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');
}
Necesito cambiar esta tabla y eliminar la referencia y columna de clave externa pick_detail_id
y agregar una nueva columna varchar llamada sku
después de la pick_id
columna.
Entonces, he creado otra migración, que se ve así:
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');
});
}
Cuando ejecuto esta migración, aparece el siguiente error:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Error general: 1025 Error al cambiar el nombre de './dev_iwms_reboot/despatch_discrepancies' a './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152) (SQL: alter tabledespatch_discrepancies
soltar clave externa pick_detail_id)[PDOException]
SQLSTATE [HY000]: Error general: 1025 Error al cambiar el nombre de './dev_iwms_reboot/despatch_discrepancies' a './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152)
Cuando intento revertir esta migración ejecutando el php artisan migrate:rollback
comando, aparece un Rolled back
mensaje, pero en realidad no está haciendo nada en la base de datos.
¿Alguna idea de lo que podría estar mal? ¿Cómo se suelta una columna que tiene una referencia de clave externa?