Utworzyłem tabelę przy użyciu migracji w następujący sposób:
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');
}
Muszę zmienić tę tabelę i usunąć odwołanie do klucza obcego i kolumnę pick_detail_id
oraz dodać nową kolumnę varchar o nazwie sku
po pick_id
kolumnie.
Utworzyłem więc kolejną migrację, która wygląda następująco:
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');
});
}
Kiedy uruchamiam tę migrację, pojawia się następujący błąd:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Błąd ogólny: 1025 Błąd podczas zmiany nazwy „./dev_iwms_reboot/despatch_discrepancies” na „./dev_iwms_reboot/#sql2-67c-17c464” (errno: 152) (SQL: alter tabledespatch_discrepancies
upuść klucz obcy pick_detail_id)[PDOException]
SQLSTATE [HY000]: Błąd ogólny: 1025 Błąd podczas zmiany nazwy „./dev_iwms_reboot/despatch_discrepancies” na „./dev_iwms_reboot/#sql2-67c-17c464” (errno: 152)
Kiedy próbuję cofnąć tę migrację, uruchamiając php artisan migrate:rollback
polecenie, otrzymuję Rolled back
komunikat, ale tak naprawdę nic nie robi w bazie danych.
Masz jakiś pomysł, co może być nie tak? Jak usunąć kolumnę zawierającą odniesienie do klucza obcego?