Ho creato una tabella utilizzando la migrazione in questo modo:
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');
}
Devo cambiare questa tabella e rilasciare il riferimento alla chiave esterna e la colonna pick_detail_id
e aggiungere una nuova colonna varchar chiamata sku
dopo la pick_id
colonna.
Quindi, ho creato un'altra migrazione, che assomiglia a questa:
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 eseguo questa migrazione, ottengo il seguente errore:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Errore generale: 1025 Errore durante la ridenominazione di './dev_iwms_reboot/despatch_discrepancies' in './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152) (SQL: alter tabledespatch_discrepancies
rilascia la chiave esterna pick_detail_id)[PDOException]
SQLSTATE [HY000]: Errore generale: 1025 Errore durante la ridenominazione di "./dev_iwms_reboot/despatch_discrepancies" in "./dev_iwms_reboot/#sql2-67c-17c464" (errno: 152)
Quando provo a invertire questa migrazione eseguendo il php artisan migrate:rollback
comando, ricevo un Rolled back
messaggio, ma in realtà non sta facendo nulla nel database.
Qualche idea su cosa potrebbe esserci di sbagliato? Come si rilascia una colonna che ha un riferimento a chiave esterna?