Saya telah membuat tabel menggunakan migrasi seperti ini:
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');
}
Saya perlu mengubah tabel ini dan menjatuhkan referensi kunci asing & kolom pick_detail_id
dan menambahkan kolom varchar baru yang disebut kolom sku
setelah pick_id
.
Jadi, saya telah membuat migrasi lain, yang terlihat seperti ini:
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');
});
}
Saat saya menjalankan migrasi ini, saya mendapatkan error berikut:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Kesalahan umum: 1025 Kesalahan saat mengganti nama './dev_iwms_reboot/despatch_discrepancies' menjadi './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152) (SQL: mengubah tabeldespatch_discrepancies
jatuhkan pick_detail_id kunci asing)[PDOException]
SQLSTATE [HY000]: Kesalahan umum: Kesalahan 1025 saat mengganti nama './dev_iwms_reboot/despatch_discrepancies' menjadi './dev_iwms_reboot/#sql2-67c-17c464' (errno: 152)
Ketika saya mencoba membalikkan migrasi ini dengan menjalankan php artisan migrate:rollback
perintah, saya mendapat Rolled back
pesan, tetapi sebenarnya tidak melakukan apa pun di database.
Tahu apa yang mungkin salah? Bagaimana Anda menjatuhkan kolom yang memiliki referensi kunci asing?