Laravel에서 마이그레이션을 안전하게 제거


206

Laravel에는 마이그레이션을 생성하되 제거하지는 않는 명령이있는 것으로 보입니다.

마이그레이션 명령을 작성하십시오.

php artisan migrate:make create_users_table

마이그레이션을 삭제하려면 데이터베이스 / 마이그레이션 폴더 내의 해당 마이그레이션 파일을 안전하게 삭제할 수 있습니까?

마이그레이션 파일 :

2013_05_31_220658_create_users_table

답변:


375

실수로 이름이 잘못된 마이그레이션을 생성했습니다 (명령 :) php artisan migrate:make. 나는 실행되지 않았다 ( php artisan migrate나는 그것을 제거하기로 결정, 그래서) 마이그레이션을. 내 단계 :

  1. 아래에서 마이그레이션 파일을 수동으로 삭제 app/database/migrations/my_migration_file_name.php
  2. 작성기 자동로드 파일을 재설정하십시오. composer dump-autoload
  3. 편하게 하다

마이그레이션 ( php artisan migrate)을 실행 한 경우 다음을 수행 할 수 있습니다.

a) 실행 migrate:rollback-마지막 마이그레이션을 취소하는 올바른 방법입니다 (Thnx @Jakobud)

b)의 경우 migrate:rollback이전 버전의 롤백) :하지 작업을 수행, 그것은 수동 (I 마이그레이션와 버그를 기억하십시오

  1. 아래에서 마이그레이션 파일을 수동으로 삭제 app/database/migrations/my_migration_file_name.php
  2. 작성기 자동로드 파일을 재설정하십시오. composer dump-autoload
  3. 데이터베이스 수정 : 마이그레이션 테이블 에서 마지막 항목 제거

2
감사. 마이그레이션을 삭제 한 후 저를위한 gottcha는 composer dump-autoload를 실행하는 것을 잊고있었습니다
— Theo Kouzelis

7
마이그레이션을 실행 한 경우 "올바른"방법으로 migrate:rollback마이그레이션을 롤백 한 다음 마이그레이션 파일을 삭제하고 자동로드를 덤프합니다. DB 또는 마이그레이션 테이블을 해킹 할 필요가 없습니다.
— Jake Wilson

다음 단계에 대한 훌륭한 답변 (php artisan migrate) (Y)
— Imran Khan

내가 잘못했을 때 나의 하나님과 나는 고통을 겪었다. 감사합니다.
— Pablo Contreras

4. DB에서 실제 테이블 삭제
— Jin

64

마이그레이션이 실행 된 경우 (읽기 : 마이그레이션 됨) 마이그레이션을 롤백하여 데이터베이스 테이블에서 히스토리를 지우십시오. 롤백되면 마이그레이션 파일을 안전하게 삭제 한 후 다시 마이그레이션을 진행할 수 있습니다.


그러나 그는 마이그레이션을 실행하지 않았습니다. 실제로하지 않은 것을 롤백 할 수 없습니까?
— Stephane

9
아니요, 그렇지 않은 경우 마이그레이션 데이터베이스에 기록이 저장되어 있지 않아야 파일을 안전하게 삭제할 수 있습니다.
— Jason Lewis

14
 php artisan migrate:fresh

개발 중이고 원하는 결과가 처음부터 시작되는 경우 작업을 수행해야합니다.

프로덕션 환경에서는 원하는 것이 아닐 수 있으므로 광고해야합니다. migrate : fresh 명령은 데이터베이스에서 모든 테이블을 삭제 한 다음 migrate 명령을 실행합니다.


5
3 upvotes? OP는 전체 데이터베이스를 삭제하고 새로 고치지 않고 마이그레이션을 삭제하는 방법을 요청했습니다. 이것은 끔찍한 조언이므로, 당신이하고있는 일을 알지 못한다면 이것을하지 마십시오.
— Goodbytes

migrate : refresh 와 migrate : fresh 의 차이점에 대해 친절하게 읽으십시오 . 첫 번째를 설명하는 것으로 보았지만 나중에 수동으로 작업하지 않아도 부분 재설정이 수행됩니다!
— joash

1
migrate : fresh는 모든 테이블을 즉시 삭제하고 처음 실행하는 것처럼 마이그레이션을 다시 실행합니다. 그것에 대해 부분적인 것은 없다. 어떤 데이터도 사라질 것이다. 문제를 해결하지만 질문에 대한 올바른 답변이 아닙니다.
— Goodbytes

12

마이그레이션 테이블에서 항목을 삭제해야 할 수도 있습니다.


7

실수로 create_users_table을 두 번 만들었습니다. 일부 클래스를 무시하고 롤백을 ErrorException으로 바꿨습니다.

당신이해야 할 일은 vendor / composer 폴더에서 autoload_classmap.php를 찾고 다음과 같은 특정 코드 줄을 찾으십시오.

'CreateUsersTable' => $baseDir . '/app/database/migrations/2013_07_04_014051_create_users_table.php',

경로를 편집하십시오. 그런 다음 롤백이 양호해야합니다.


내가했던 것처럼 마이그레이션 파일의 이름을 변경하고 이름을 바꾼 경우 이것은 당신이 찾고있는 답입니다! 감사.
— Berdus

2
"composer dumpautoload"
— FooBar

5

현재 답변에 동의합니다. 정보를 조금만 추가하고 싶습니다.

단일 마이그레이션을 취소 할 수 있는 새로운 기능이 Laravel 5.3 이상 버전 에 추가되었습니다 .

php artisan migrate:rollback --step=1

그런 다음 아래에서 마이그레이션 파일을 수동으로 삭제하십시오. database/migrations/my_migration_file_name.php

마이그레이션을 실행할 때 유용한 기능입니다.

이러한 방식으로 2 단계만으로 laravel에서 마이그레이션을 안전하게 제거 할 수 있습니다.


0

차라리 수동으로하겠습니다

  1. 더 이상 모델이 필요하지 않은 경우 먼저 모델을 삭제하십시오.
  2. ...database/migrations폴더 에서 마이그레이션 삭제
  3. 이미 마이그레이션 한 경우 (예 : 이미 실행 php artisan migrate한 경우) phpmyadmin 또는 SQL (있는 경우) 및 데이터베이스에 로그인하여 마이그레이션으로 작성된 테이블을 삭제하십시오.
  4. 여전히 데이터베이스 내 마이그레이션 폴더에서 해당 마이그레이션 파일 이름을 가진 행을 찾아 삭제하십시오.

나를 위해 일하고, 그것이 도움이되기를 바랍니다!


-2

이것은 나를 위해 작동합니다 :

  1. 데이터베이스에서 주로 마이그레이션 테이블을 모두 삭제했습니다.
  2. php artisan migrate:refresh

라 라벨에서 5.5.43

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.