J'ai créé une table en utilisant la migration comme celle-ci:
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');
}
Je dois changer cette table et supprimer la référence et la colonne de clé étrangère pick_detail_id
et ajouter une nouvelle colonne varchar appelée sku
après la pick_id
colonne.
Donc, j'ai créé une autre migration, qui ressemble à ceci:
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');
});
}
Lorsque j'exécute cette migration, j'obtiens l'erreur suivante:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Erreur générale: 1025 Erreur lors du changement de nom de './dev_iwms_reboot/despatch_discrepancies' en './dev_iwms_reboot/#sql2-67c-17c464' (numéro d'erreur: 152) (SQL: modifier la tabledespatch_discrepancies
déposer la clé étrangère pick_detail_id)[PDOException]
SQLSTATE [HY000]: Erreur générale: 1025 Erreur lors du changement de nom de «./dev_iwms_reboot/despatch_discrepancies» en «./dev_iwms_reboot/#sql2-67c-17c464» (numéro d'erreur: 152)
Lorsque j'essaye d'inverser cette migration en exécutant la php artisan migrate:rollback
commande, j'obtiens un Rolled back
message, mais cela ne fait rien dans la base de données.
Une idée de ce qui ne va pas? Comment supprimer une colonne qui a une référence de clé étrangère?