मैंने इस तरह माइग्रेशन का उपयोग करके एक तालिका बनाई है:
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
एक नया वर्चर कॉलम जोड़ने की आवश्यकता है ।sku
pick_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
संदेश मिलता है , लेकिन यह वास्तव में डेटाबेस में कुछ भी नहीं कर रहा है।
किसी भी विचार क्या गलत हो सकता है? आप उस कॉलम को कैसे छोड़ सकते हैं जिसमें एक विदेशी कुंजी संदर्भ है?