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_idy agregar una nueva columna varchar llamada skudespués de la pick_idcolumna.
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_discrepanciessoltar 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:rollbackcomando, aparece un Rolled backmensaje, 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?