73

artisan migrate などを簡単に実行できますが、migration:rollback を使用してロールバックしようとすると、このエラーが発生し続けます。

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}}

これはバグですか?または、これをどのようにデバッグする必要がありますか?

4

9 に答える 9

177

たぶん、あなたはすでにこの問題を解決しています。しかし、何らかの理由で、ロールバックを実行するにはcomposer dumpautoload最初に実行する必要があることがよくあります。移行が機能する場合でも。

于 2013-06-27T11:48:51.883 に答える
37

この問題に数日間取り組んできたので、この問題を解決するための決定的な答えを提供できると思います。ええ、私は知っていますが、我慢してください。

この問題が発生した場合の最初の呼び出しポートは、実行すること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 セクションに含まれていることを確認する必要があります。次に例を示します。

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

この最後のビットは、私にとって物事を台無しにしたものです。物事を最適化するための誤った試みで、ファイルからできる限り多くのものを引き出しました。単純にcomposer.json、これは Web 要求にのみ影響すると考えていました。これはArtisanにも影響を与えていることが判明したため、この行を元に戻して実行するとcomposer dump-autoload問題が解決しました.

最後に、すべてが失敗した場合は、問題を引き起こしているサポート ライブラリの 1 つにバグがある可能性があります。その場合は、またはそのバリエーションを使用して更新を試みることができますcomposer update。ただし、これが問題の真の原因になることはめったにないと思います。

于 2013-09-13T03:08:45.413 に答える
2

laravel サイトから composer.phar ファイルをダウンロードし、laravel フォルダーのルート ディレクトリにcomposer.pharファイルを移動します。

次に、ターミナルから laravel のルート ディレクトリに移動し、composer.phar update または単に run を実行しますphp artisan dump-autoload

于 2014-06-30T16:28:14.223 に答える
1

私は同じ問題に直面し、問題を理解しました

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 を実行すると、クラス名は例外なく正しく解決されました

于 2014-09-03T18:18:07.493 に答える