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 : refreshmigrate : 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.