Я створив таблицю, використовуючи міграцію наступним чином:
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
та додати новий стовпець varchar, який називається 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_discrepancies' у './dev_iwms_reboot/#sql2-67c-17c464' (таблиця помилок: 152: SQL)despatch_discrepancies
скинути зовнішній ключ pick_detail_id)[PDOException]
SQLSTATE [HY000]: Загальна помилка: 1025 Помилка при перейменуванні './dev_iwms_reboot/despatch_discrepancies' в './dev_iwms_reboot/#sql2-67c-17c464' (помилка: 152)
Коли я намагаюся змінити цю міграцію за допомогою php artisan migrate:rollback
команди, я отримую Rolled back
повідомлення, але насправді це нічого не робить у базі даних.
Будь-яка ідея, що може бути неправильним? Як випустити стовпець із посиланням на зовнішній ключ?