다음과 같이 마이그레이션을 사용하여 테이블을 만들었습니다.
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
뒤에 호출되는 새 varchar 열을 추가해야합니다 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)로 바꿀 때 1025 오류 발생 (SQL : alter tabledespatch_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
메시지 가 표시되지만 실제로 데이터베이스에서 아무 작업도 수행하지 않습니다.
무엇이 잘못되었는지 아십니까? 외래 키 참조가있는 열을 어떻게 삭제합니까?