ProgramingTip

Laravel 마이그레이션 : 클래스 "찾을 수 없음"

bestdevel 2020. 12. 31. 23:31
반응형

Laravel 마이그레이션 : 클래스 "찾을 수 없음"


Laravel 베어 배포 프로젝트를 Microsoft Azure에 배포하고 발생시킬 때 php artisan migrate마다 발생합니다.

[2015-06-13 14:34:05] production.ERROR : D : \ home \ site \ vendor \ laravel \ framework에 'Class' 'not found'좋아요가있는 'Symfony \ Component \ Debug \ Exception \ FatalErrorException' 예외 \ src \ Illuminate \ Database \ Migrations \ Migrator.php : 328

스택 추적 :

 #0 {main}  

무엇이 문제일까요? 감사합니다

-편집하다-

고급 클래스

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->bigIncrements('id');
            $table->string('name', 50);
            $table->string('surname', 50);
            $table->bigInteger('telephone');
            $table->string('email', 50)->unique();
            $table->string('username', 50)->unique();
            $table->string('password', 50);
            $table->boolean('active')->default(FALSE);
            $table->string('email_confirmation_code', 6);
            $table->enum('notify', ['y', 'n'])->default('y');
            $table->rememberToken();
            $table->timestamps();

            $table->index('username');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

PSR-4 자동 로더 사용자 (composer.json) :

마이그레이션 폴더를 클래스 맵 배열로 유지하고 자동로드에서 psr-4 개체를 포함하지 않습니다. 마이그레이션 메인 클래스 Migrator는 네임 스페이스를 지원하지 않습니다. 예를 들면 다음과 같습니다.

"autoload": {
    "classmap": [
        "app/database/migrations"
    ],
    "psr-4": {
        "Acme\\controllers\\": "app/controllers"
    }
}

그런 다음 다음을 실행하십시오.

php artisan clear-compiled 
composer dump-autoload
php artisan optimize
  • 먼저 요청한 모든 파일을 지하시기 바랍니다.
  • 두 번째는 업데이트 autoload_psr4.php하고 거의 autoload_classmap.php.
  • 세 번째는 autoload_classmap.php.

이때부터는이 작업을 다시 수행 할 필요가 없으며 모든 새 마이그레이션이 올바르게 작동합니다.


마이그레이션을 실행할 때 "클래스를 찾을 수 없음 오류"가 발생하면이 명령을 실행 해보십시오.

composer dump-autoload 

그런 다음 migrate 명령을 다시 실행하십시오. 자세한 내용은 공식 사이트 (#Running Migrations) : http://laravel.com/docs/master/migrations#running-migrations


마이그레이션 파일 이름이 클래스 이름과 동일한 지 확인하기 만하면됩니다.

즉 :

파일 이름이 :

xxx_151955_create_post_translations_table.php

그런 다음 클래스는 다음과 같아야합니다.

CreatePostTranslationsTable


나는 이와 같은 문제가 얼마 전에 있었다. Laravel에 대한 문서에서는 http://laravel.com/docs/master/migrations#running-migrations를 제안하기 때문에 분명히 일반적인 문제입니다.

기본적으로해야 할 일은 일부 작곡가 파일을 새로 고치는 것입니다. 간단히 실행 :

composer dump-autoload

이렇게하면 작성기 자동로드 파일이 새로 고쳐지고 정상적인 마이그레이션을 실행할 수 있으며 작동합니다! 최우수.


나는 또한 같은 문제에서 실행됩니다.

나를위한 해결책은 마이그레이션 파일을 삭제하고 데이터베이스의 "migrations"테이블에서 레코드를 삭제하는 것이 었습니다.

그 후 나는 달렸다

작성기 덤프 자동로드

마침내 마이그레이션을 재설정 / 롤백 할 수있었습니다.


마이그레이션 파일 중 하나를 삭제했습니다. 같은 문제에 직면했지만php artisan migrate:rollback

그런 다음 시도했습니다 composer dump-autoload. 다시 같은 것이 나타났습니다.

삭제 된 파일을 복원 composer dump-autoload하고 php artisan migrate:rollback. 효과가있다.


이 질문에 답하기에는 늦었지만 아마도 이것이 누군가를 도울 것입니다.

마이그레이션 파일 이름을 변경 한 경우 내부 클래스 이름을 확인하십시오.

예를 들어 마이그레이션 이름을에서 2018_06_10_079999_create_admins_table.php변경하면 2018_06_10_079999_create_managers_table.php내부 클래스 이름 에서 CreateAdminsTable변경되어야합니다 CreateManagerTable.


나에게 문제는 CreateModulesProblemsTable의 클래스 이름으로 마이그레이션 이름을 2017_12_15_012645_create_modules_problems.php로 지정했다는 것입니다. 파일 이름에 _table을 추가하자마자 모든 것이 정상적으로 작동했습니다.


Laravel 5.2 개발 프로젝트를 프로덕션으로 옮긴 후에도 비슷한 상황 (클래스를 찾을 수 없음 오류)이 발생했습니다. 프로덕션 서버는 "project"클래스를 찾고 있었지만 컨트롤러 이름은 Project.php였습니다. 파일의 이름을 project.php로 바꾸면 괜찮 았습니다.


내 프로젝트를 마이그레이션하려고 할 때 동일한 클래스를 찾을 수 없음 오류가 발생했습니다. 때때로 그것은 당신을 얻는 간단한 일입니다. 제 경우에는 이름을 일찍 변경하고 변경 사항을 전체에 적용하지 않았기 때문에 마이그레이션 파일에서 클래스 이름이 올바르지 않음을 발견했습니다.

클래스 이름을 수정 한 후 composer dump-autoload를 수행하고 문제가 해결되었습니다.

HTH 누군가 :]


나는 어리석게 말했었다.

namespace database\migrations;

내 마이그레이션 내부 create_users_table.php [2014_10_12_000000_create_users_table.php]

비슷한 오류가 발생했습니다. 'CreateUsersTable'클래스를 찾을 수 없습니다.

맨 위에서이 줄을 제거하면이 오류가 해결되었습니다.


테이블의 데이터베이스에서 행을 삭제migrations 하면 문제가 해결됩니다. 마이그레이션 할 때 더 이상 표시되지 않습니다.

다른 방법은 원하는 파일을 간단하게 만드는 것입니다. 제 경우에는이 마이그레이션을 제거하고 싶었습니다. :)


제 경우에는 데이터베이스의 자동 증가가 있었고 과거에는 수동으로 하나의 항목을 제거 AUTO_INCREMENT하고 테이블에서 다음 ID보다 하나 더 많은 것을 가리 켰습니다.

분명히 Laravel은 AUTO_INCREMENT-1을 사용 하여 마지막 마이그레이션이 무엇인지 알고 있습니다.


다음 두 파일에 올바른 클래스 이름과 마이그레이션 이름이 포함되어 있는지 확인하십시오.

C : \ xampp \ htdocs \ StuffSpot \ vendor \ composer \ autoload_classmap.php C : \ xampp \ htdocs \ StuffSpot \ vendor \ composer \ autoload_static.php

참조 URL : https://stackoverflow.com/questions/30819934/laravel-migrations-class-not-found

반응형