Programing

Laravel 4 마이그레이션 롤백 문제

lottogame 2020. 10. 28. 07:37
반응형

Laravel 4 마이그레이션 롤백 문제


장인 마이그레이션 등을 쉽게 실행할 수 있지만 마이그레이션을 사용하여 롤백하려고 할 때 계속해서이 오류가 발생합니다.

c:\xampp\htdocs\laravel>php artisan migrate:rollback
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'CreateCodesnippetsTable' not found","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illum
inate\\Database\\Migrations\\Migrator.php","line":301}}

이것은 버그입니까? 또는 이것을 어떻게 디버깅해야합니까?


이미이 문제를 해결했을 수도 있습니다. 그러나 어떤 이유로 롤백을 수행하려면 종종 composer dumpautoload먼저 실행해야한다는 것을 알고 있습니다 . 마이그레이션이 작동하더라도.


며칠 동안이 문제와 씨름하면서 이제이 문제를 해결하기위한 확실한 답을 제공 할 수 있다고 생각 합니다. 예, 큰 전화는 알고 있지만 참아주세요.

이 문제가 발생하면 첫 번째 호출 포트는를 실행하는 것 composer dump-autoload입니다. 이로 인해 파일의 업데이트 된 버전이 생성됩니다 vendor/composer/autoload_classmap.php.

경우 autoload_classmap.php업데이트되지 않습니다 당신은 당신이 시도 할 수있는 경우 권한 문제가있을 수 있습니다 sudo composer dump-autoload.

그러나 autoload_classmap.php 않습니다 업데이트됩니다, 그것은 (이 경우 마이그레이션 클래스에 대한 항목이 포함되어 있는지 확인 CreateCodesnippetsTable). 이 클래스에 대한 항목이 없으면 composer.json파일을 확인하고 app/database/migrations폴더가 자동로드 섹션에 포함되어 있는지 확인해야합니다 . 예 :

"autoload": {
    "classmap": [
        "app/controllers",
        "app/models",
        "app/database/migrations"
    ]
},

이 마지막 부분은 나를 망쳐 놓은 것입니다. 최적화에 대한 잘못된 시도로 composer.json파일에서 최대한 많이 가져 왔고 이것이 웹 요청에만 영향을 미칠 것이라고 순진하게 생각했습니다. 이것은 Artisan에게도 영향을 미쳤 으므로이 라인을 다시 넣고 실행 composer dump-autoload하면 문제가 해결되었습니다.

실패하는 모든 경우 마지막으로, 다음, 어쩌면 당신이 사용하는 업데이트를 시도 할 수있는 경우에 문제의 원인이되는 지원 라이브러리 중 하나에 버그가있다 composer update또는 그 일부 변화는. 그러나 이것이 문제의 진정한 원인이 될 가능성은 거의 없다고 생각합니다.


Windows에있는 경우 터미널 / 명령 줄 유틸리티에서 composer사용 하고 다음을 수행하십시오.

composer dump-autoload

도움이 되었기를 바랍니다.


내가 볼 수 있듯이 클래스 이름을 수동으로 변경 한 것 같습니다. 오류에는 클래스 이름이 CreateCodesnippetsTable있지만 제공 한 마이그레이션 파일 (pastebin)에서 클래스 이름은 CreateCodeSnippetsTable(Snippets의 S에 주목하십시오. 수동으로 변경 한 것 같습니다).

데이터베이스에서 마이그레이션 테이블을 확인하면 각 마이그레이션에 대한 레코드가 표시됩니다. 마이그레이션을 만들 때 해당 이름으로 데이터베이스에 저장되고 롤백 메서드는 데이터베이스에 제공된 이름으로 파일을 읽으려고 시도합니다. 수동으로 변경할 경우 laravel이 클래스를 찾을 수없고 오류.

이 문제를 해결하려면 변경 사항을 실행 취소하고 데이터베이스의 마이그레이션 행을 롤백하거나 수동으로 편집하여 올바른 클래스 이름을 포함 할 수 있습니다.

도움이 되었기를 바랍니다.


이 오류에 대한 단일 솔루션이없는 것 같습니다. 나는 많은 제안을 시도했지만 마침내 이것은 내 끝에서 작동합니다.

COMPOSER=composer.json composer dump-autoload

여기에 이미지 설명 입력


나는 그것을 실행하여 고쳤다.

composer.phar update


다운로드 composer.phar의 laravel 사이트에서 파일을하고 가져 composer.phar을 받는 파일을 루트 디렉토리 laravel 폴더,

그런 다음 터미널에서 laravel의 루트 디렉토리로 이동하여를 실행 composer.phar update하거나 간단히 실행하십시오 php artisan dump-autoload.


나는 같은 문제에 직면했고 문제를 파악했다.

PatientReasonOfVisits 테이블에 새 열 날짜를 추가하기위한 마이그레이션을 만들었습니다. 마이그레이션을 만들 때 클래스 이름이 laravel 생성기를 사용했습니다.

class AddDateToPatientReasonOfVisitsTable

새 마이그레이션 파일을 만든 후에는 composer dump-autoload를 실행하여 파일이 클래스 맵 파일에 나열되는지 확인해야합니다.

파일 이름은 2014_09_02_214134_add_date_to_patientreasonofvisitstable.php였습니다.

마이그레이션이 성공적으로 완료되고 새 레코드가 마이그레이션 테이블에 추가되었습니다. 마이그레이션 열에서 파일 이름이 사용됩니다.

마이그레이션을 롤백 할 때 클래스를 찾을 수 없음 예외가 발생했습니다.이 클래스를 찾을 수 없습니다.

AddDateToPatientreasonofvisitsTable

참고 : 클래스 이름의 차이점

이 문제를 해결 한 이유와 방법 마이그레이션 파일 이름을 사용하여 클래스 이름을 롤백하면 마이그레이션 테이블에서 대문자와 소문자가 파일 이름의 밑줄 "_"로 결정됩니다.

따라서 마이그레이션 파일의 이름을 2014_09_02_214134_add_date_to_patient_reason_of_visits_table.php로 바꾼 후 파일 이름을 바꾼 후 composer dump-autoload를 실행하면 예외없이 클래스 이름이 올바르게 해석됩니다.


마이그레이션 테이블을 삭제 한 다음 실행했습니다. php artisan migrate:refresh

그런 다음 마이그레이션이 모두 실행될 수 있었지만 이것이 최선의 방법인지 확실하지 않았지만 저에게 효과적이었습니다.

저는 Laravel 5를 실행하고 있습니다.

참고 URL : https://stackoverflow.com/questions/17174463/laravel-4-migrate-rollback-problems

반응형