2017-05-13 21 views
0

私は新しいLaravelをテストすることにしました。だから私は基本的なコマンドを開始しました:Laravel php artisanに失敗しました。artisan make:auth

$ laravel new blog 

$ php artisan make:auth 

$ php artisan migrate 

と私は私のAppServiceProvider.phpファイルを編集し、ブート方式にデフォルトの文字列の長さ

use Illuminate\Support\Facades\Schema; 

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

を追加しかし、私はまだエラーを持っている:

[Symfony\Component\Debug\Exception\FatalErrorException] 
    Call to undefined method Illuminate\Database\Schema\MySqlBuilder::defaultStringLength() 
+0

Laravelのどのバージョンを使用していますか? –

+0

@AguDondo Laravel 5.2 – Sa7aR

+0

[定義されていないメソッドを呼び出す\ Database \ Schema \ MySqlBuilder :: defaultStringLength()]の重複の可能性があります(http://stackoverflow.com/questions/42105351/call-to-undefined-method-illuminate- –

答えて

0

defaultStringLengthはLaravel 5.4で導入されました。

Reference

+0

どのようにdefaultStringLength、 を使用せずに登録を動作させるそれは動作しないし、ユーザーのテーブルにデータを挿入しないでください。 @AguDondo – Sa7aR

+0

私はlaravel 5.2を5.4にアップグレードしましたが、私はまだ同じエラー@AguDondoを持っています – Sa7aR

0

あなたは間違ったクラスを呼び出しています。 Illuminate \ Support \ Facades \ SchemaクラスにはメソッドdefaultStringLengthはありませんが、Illuminate \ Database \ Schema \ MySqlBuilderクラスでインストールされています。ドキュメントをチェック : MySqlBuilder Docs Schema Docs

+0

クラスIlluminate \ Support \ Facades \ Schemaの代わりにIlluminate \ Database \ Schema \ MySqlBuilderクラスを追加すると、クラス 'App \ Providers \ Schema'が見つかりませんでした。 – Sa7aR

0

Laravel 5.4は、データベース内の「絵文字」を格納するためのサポートが含まれ、デフォルトで設定されutf8mb4文字を、使用しているためです。あなたはこれらの2つのソリューションからいずれかを選択することができます。

1)の変更を

'charset' => 'utf8mb4', 
'collation' => 'utf8mb4_unicode_ci', 

'charset' => 'utf8', 
'collation' => 'utf8_unicode_ci', 

2)編集AppServiceProviderのApp \プロバイダであり、\ AppServiceProvider.phpとに次の行を追加しますboot()メソッドを呼び出して、スキーマのファサードをロードします。

use Illuminate\Support\Facades\Schema; 

/** 
* Bootstrap any application services. 
* 
* @return void 
*/ 
public function boot() 
{ 
    Schema::defaultStringLength(191); 
} 

実際には、デフォルトの最大のfi実際の文字列の長さを255から最大191文字に短縮します(utf8は1文字につき3バイトを使用し、utf8mb4は1文字につき4バイトを使用します)。したがって、移行で文字列フィールドを手動で設定しないと、新しいデフォルトは191になります。

関連する問題