web-dev-qa-db-ja.com

php職人の移行:クラススキーマが見つかりません

移行を行うとき、Windowsコンソールで次のコマンドを実行します。

php artisan migrate

コマンドを実行すると、次のエラーが表示されます。

[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'Market\Providers\Schema' not found

誰かが私を助けてくれたらとてもありがたいです。

5
FranMoronR

そのページの上部に次の行を追加します(providersディレクトリの下のAppServiceProvider.php)

use Illuminate\Support\Facades\Schema;
19

この記事 を使用して、「Laravel 5.4:指定されたキーが長すぎますエラー」というメッセージで別の問題を修正したようです。次のコードを追加することをお勧めします

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

名前の付いたファイルに

AppServiceProvider.php

実際には、bootメソッドのみを変更し、useセクションの更新を忘れています。私は正しいですか?

記事は言う:

Laravel 5.4はデフォルトのデータベース文字セットに変更を加え、絵文字の保存のサポートを含むutf8mb4になりました。これは新しいアプリケーションにのみ影響し、MySQL v5.7.7以降を実行している限り、何もする必要はありません。

MariaDBまたは古いバージョンのMySQLを実行している場合、移行を実行しようとすると次のエラーが発生する可能性があります。

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or
access violation: 1071 Specified key was too long; max key length is
767 bytes (SQL: alter table users add unique
users_email_unique(email))

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071
Specified key was too long; max key length is 767 bytes
10

移行コードが名前空間にあるようで、ここでPHPはスキーマクラスを探しています。ファイルの先頭に次を追加します。

use Schema;

または、完全修飾名前空間を使用してSchemaクラスを参照してください。

\Schema::table(...);
3
jedrzej.kurylo