Taşıma işlemini şu şekilde kullanarak bir tablo oluşturdum:
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');
}
Bu tabloyu değiştirmem ve yabancı anahtar referansını ve sütununu pick_detail_id
bırakmam ve sütundan sku
sonra adlandırılan yeni bir varchar sütunu eklemem gerekiyor pick_id
.
Bu yüzden, şuna benzeyen başka bir geçiş oluşturdum:
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');
});
}
Bu taşımayı çalıştırdığımda şu hatayı alıyorum:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: Genel hata: 1025 './dev_iwms_reboot/despatch_discrepancies' için './dev_iwms_reboot/#sql2-67c-17c464' (hata no: 152) (SQL: tabloyu değiştirdespatch_discrepancies
yabancı anahtarı bırak pick_detail_id)[PDOException]
SQLSTATE [HY000]: Genel hata: 1025 './dev_iwms_reboot/despatch_discrepancies' olarak './dev_iwms_reboot/#sql2-67c-17c464' olarak yeniden adlandırılırken hata (hata no: 152)
php artisan migrate:rollback
Komut çalıştırarak bu geçişi tersine çevirmeye çalıştığımda bir Rolled back
mesaj alıyorum, ancak aslında veritabanında hiçbir şey yapmıyor.
Neyin yanlış olabileceği hakkında bir fikriniz var mı? Yabancı anahtar referansı olan bir sütunu nasıl bırakırsınız?