1

要するに、シードはmysqlでうまく機能していますが、sqliteでは壊れています。壊れたコードは次のようになりますDB::table('user')->insert($users);

種コード:

<?php
public function run() {
    DB::table('user')->delete();
    $users = array();
    $birth = new DateTime('1980-03-12');
    while ($i++ < 50) {
        $users[$i]['email'] = "mail$i@example.com";
        $users[$i]['password'] = User::password('test');
        $users[$i]['enabled'] = 1;
        $users[$i]['name'] = 'Name';
        $users[$i]['surname'] = 'Surname';
        $users[$i]['birthDate'] = $birth;
    }
    DB::table('user')->insert($users); //<- This line is broken when using sqlite.
}

私のデフォルトのデータベースドライバーはmysqlです。現在、テスト環境用にsqliteに切り替えようとしています。だから、下に

アプリ/構成/テスト/database.php

「接続」内にこの構成があります(「デフォルト」キーは「sqlite」です)

'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => '',
        ),

今、私が発行した場合

php artisan migrate --seed、これは正常に動作しています。

私が発行した場合

php artisan migrate --seed --env=testing、これは機能しません

上記DB::table('user')->insert($users);は失敗しています。事実、シードが正常に機能することをコメントすると。コマンドラインでのエラーは

ErrorException","message":"array_keys() は、パラメーター 1 が配列であることを期待しています。指定された null は [...] /laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php","line":52

ここで何が問題なのですか?

4

1 に答える 1