2017-06-07 5 views
0

Laravel 5.4アプリケーションの移行とシード設定を設定しようとしています。 mysql dbの移行とシード処理が動作しています。 しかし、メモリDB内のsqlite上で実行しようとすると、dbが空のままになっているように思えます。明らかに移行は実行されますが、シード処理はテーブルの欠落について不平を言う。職人のマイグレーションとメモリ内のsqliteへのシードは、常に空ですか?

私は単にdatabase.phpで

'sqlite_memory' => [ 
     'driver' => 'sqlite', 
     'database' => ':memory:', 
     'prefix' => '', 
    ], 

にこのようsqliteのを構成し、私は私がdatabase.phpでと.envからの接続の他のすべての種類を排除していた

'default' => env('DB_CONNECTION', 'test_sqlite'), 

としての私のデフォルトの接続を設定します、 念のため。

正常にPHPの職人の移行を実行した後、私はsqlite3の入力と私は唯一のDBを参照してください。

Connected to a transient in-memory database. 
Use ".open FILENAME" to reopen on a persistent database. 
sqlite> .database 
seq name    file              
--- ---------------  
0 main                  
sqlite> .dbinfo 
sqlite> .tables 
sqlite> 

何が内側に存在しないとして、それは私には見えます。 私はphp artisan db:seedを試してみると、どのテーブルにも "このようなテーブルエラーはありません"というメッセージがすぐに出ます。

しかし、ファイルdbでsqliteを動作させることはできました。 これを解決する方法がわかりません...

+0

@btl、あなたは正しい、今私は理解する。私はphpunitのテストのためにやっていました。私がテストセットアップから移行してシードすると、うまくいくように思えます...私はそれをaswerとして受け入れます... – Glasnhost

答えて

0

メモリ内のsqliteデータベースは、現在の接続が開いている間だけ有効です。これらの2つの行は、一時的なインメモリデータベースに接続されています。および '.open FILENAME "を使用して永続データベースを再オープンします。移行後にdbがメモリに格納されなくなることを示します。

関連する問題