라라벨 마이그레이션 롤백 문의

조회수 1104회

안녕하세요. 마이그레이션 연습한다고 이것저것 해보고 있는데 todos 테이블을 만들고 칼럼을 추가하기 위해서 artisan make: 명령으로 생성 추가 롤백등을 해보다 이해가 안되는 부분이 있어 문의드립니다.

아래는 실제로 작업한 스텝입니다.

  1. 생성한 todos마이그레이션으로 테이블생성
  2. todos테이블에 컬럼을 추가하기 위한 마이그레이션 생성
  3. 마이그레이션 실행하여 테이블에 칼럼 정상추가 확인
  4. 롤백
// 컬럼추가 마이그레이션파일
class AddColumnTodosTable extends Migration
{
    public function up()
    {
        Schema::table('todos', function (Blueprint $table) {
            $table->string('title');
        });
    }

    public function down()
    {
        Schema::table('todos', function (Blueprint $table) {
            $table->drop('title');
        });
    }
}

롤백하여 칼럼추가 마이그레이션이 롤백됨을 확인하였는데 todos테이블이 사라졌습니다. 원인을 모르겠는데 down메소드가 잘 못 작성되었나요? 아래는 위내용을 캡쳐한 이미지 입니다. 도움 부탁드립니다. ㅠ

이미지

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 마이그레이션을 잘 사용하지 않아서 정확하진 않지만
    일단 메뉴얼 상에는

    $table->dropColumn('title');
    

    https://laravel.kr/docs/5.3/migrations

    이렇게 되어있네요.

    그리고

    php artisan migrate:refresh --step=1
    

    처럼 스텝을 지정할 수 도 있네요.

    라라벨에서 생성한 migrations 테이블의 batch 필드가 step을 진행하는데 참조 되는 거 같습니다.

    이 두가지 참고가 되셨으면 합니다.

    • 네 이슈 확인하였는데 drop은 table을 삭제하더라구요. dropColumn으로 메소드 변경하여 처리하였습니다. 리프레서 옵션은 몰랐는데 감사합니다 ^^ 알 수 없는 사용자 2017.2.6 12:36
    • 아 그렇군요. Blueprint $table 의 인스턴스에서 drop을 실행하면 자기 자신이 삭제 되나보네요. Manki Kim 2017.2.6 12:38

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)