Laravel bareboneプロジェクトを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)の場合:
移行フォルダーをクラスマップ配列内に保持し、autoloadの下の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ファイルを更新するだけです。単に実行する:
composer dump-autoload
これにより、composer autoloadファイルが更新され、通常の移行を実行できます。最善。
私も同じ問題で実行されます。
私にとっての解決策は、移行ファイルを削除し、データベースの「移行」テーブルからレコードを削除することでした。
その後、私は走った
composer dump-autoload
最終的に移行をリセット/ロールバックできました。
移行ファイルの1つを削除しました。 php artisan migrate:rollback
ながら、同じ問題に直面しました
次に、composer dump-autoload
を試しました。再び同じことが判明しました。
削除したファイルを復元し、composer dump-autoload
とphp artisan migrate:rollback
を試しました。できます。
私にとって問題は、クラス名がCreateModulesProblemsTableである移行に2017_12_15_012645_create_modules_problems.phpという名前を付けたことです。ファイル名に_tableを追加するとすぐに、すべて正常に機能しました。
この質問に答えるのは遅いと思うが、これは誰かを助けるかもしれない。
移行ファイル名を変更した場合は、その内部クラス名について確認してください。
たとえば、移行名を2018_06_10_079999_create_admins_table.php
から2018_06_10_079999_create_managers_table.php
に変更すると、その内部クラス名もCreateAdminsTable
からCreateManagerTable
に変更する必要があります。
Laravel 5.2開発プロジェクトを実稼働環境に移動した後、同様の状況(クラスが見つかりませんというエラー)が発生しました。実動サーバーはクラス「プロジェクト」を探していましたが、コントローラー名はProject.phpでした。ファイルの名前をproject.phpに変更したら、行って良かったです。
私は愚かに置きました:
namespace database\migrations;
移行中にcreate_users_table.php [2014_10_12_000000_create_users_table.php]
同様のエラーが発生していました-クラス「CreateUsersTable」が見つかりません。
上部のこの行を削除すると、このエラーが解決しました。
プロジェクトを移行しようとしたときに、同じクラスが見つからないというエラーが表示されました。時にはそれはあなたを得る単純なものです。私の場合、名前の変更を早い段階で行い、その変更を最後まで伝えなかったため、移行ファイルでクラス名が正しくないことに気付きました。
クラス名を修正した後、composer dump-autoloadを実行すると、問題がなくなりました。
HTH誰か:]
テーブルmigrations
のデータベースの行を削除するだけですで問題が解決します。移行すると表示されなくなります
他の方法は、あなたが望むものに依存するファイルを簡単に作成することです。私の場合、この移行を取り除きたいと思いました。 :)
私の場合、データベースの自動インクリメントでした。以前は、1つのエントリを手動で削除しましたが、AUTO_INCREMENT
はテーブル内の次のIDよりも1つ多くポイントしていました。
どうやらLaravelはAUTO_INCREMENT
- 1を使用して、最後に実行された移行がどれであるかを確認します。
次の2つのファイルに正しいクラス名と移行名が含まれていることを確認してください。
C:\ xampp\htdocs\StuffSpot\vendor\composer\autoload_classmap.php C:\ xampp\htdocs\StuffSpot\vendor\composer\autoload_static.php