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_idbırakmam ve sütundan skusonra 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_discrepanciesyabancı 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:rollbackKomut çalıştırarak bu geçişi tersine çevirmeye çalıştığımda bir Rolled backmesaj 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?