मैंने इस तरह माइग्रेशन का उपयोग करके एक तालिका बनाई है:
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');
}
मुझे इस तालिका को बदलने और विदेशी कुंजी संदर्भ और कॉलम को छोड़ने और कॉलम के बाद pick_detail_idएक नया वर्चर कॉलम जोड़ने की आवश्यकता है ।skupick_id
तो, मैंने एक और प्रवास बनाया है, जो इस तरह दिखता है:
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');
});
}
जब मैं इस माइग्रेशन को चलाता हूं, तो मुझे निम्न त्रुटि मिलती है:
[Illuminate \ Database \ QueryException]
SQLSTATE [HY000]: सामान्य त्रुटि: 'के नाम पर 1025 त्रुटि ।/dev_iwms_reboot/despatch_discreparios' पर ।/dev_iwms_reboot/#sql2-67c-17c464 '(152: 152)despatch_discrepanciesड्रॉप विदेशी कुंजी pick_detail_id)[PDOException]
SQLSTATE [HY000]: सामान्य त्रुटि: '25 ./dev_iwms_reboot/despatch_discrepancies 'का नाम बदलने के लिए' ./dev_iwms_reboot/#sql2-67c-1764 '(इरनो): 152 पर त्रुटि।
जब मैं php artisan migrate:rollbackकमांड चलाकर इस माइग्रेशन को उलटने की कोशिश करता हूं, तो मुझे एक Rolled backसंदेश मिलता है , लेकिन यह वास्तव में डेटाबेस में कुछ भी नहीं कर रहा है।
किसी भी विचार क्या गलत हो सकता है? आप उस कॉलम को कैसे छोड़ सकते हैं जिसमें एक विदेशी कुंजी संदर्भ है?