Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQLite对mysql迁移设置进行单元测试_Mysql_Database_Sqlite_Unit Testing_Laravel 5 - Fatal编程技术网

使用SQLite对mysql迁移设置进行单元测试

使用SQLite对mysql迁移设置进行单元测试,mysql,database,sqlite,unit-testing,laravel-5,Mysql,Database,Sqlite,Unit Testing,Laravel 5,我想使用SQLite进行PHPunit测试。我们使用的是mysql驱动程序,因此我们基于此创建了迁移。。。这意味着我们正在使用nullables作为默认值MYSQL不关心这个SQLite 迁移: Schema::table('users', function ($table) { $table->string('username', 132)->nullable(); 测试用例片段:配置phpunit环境 $app['config']->set('databa

我想使用SQLite进行PHPunit测试。我们使用的是
mysql
驱动程序,因此我们基于此创建了迁移。。。这意味着我们正在使用
nullables
作为默认值
MYSQL
不关心这个<显然,代码>SQLite

迁移:

Schema::table('users', function ($table) {
    $table->string('username', 132)->nullable();
测试用例片段:配置phpunit环境

    $app['config']->set('database.connections.testbench', [
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => ''
        ]
运行
phpunit
输出:

无法添加默认值为NULL的NOT NULL列

我注意到
database.php
配置文件中的
mysql
有一个“”模式,您可以将其设置为
false
,该模式处理无效或缺失的数据类型:

    'mysql' => [
        'driver'    => 'mysql',
         ...
        'strict'    => false,
    ],
所以我开始寻找SQLite的
strict
模式,并在这里找到,尝试设置
PRAGMA strict=ON关闭

    $app['config']->set('database.connections.testbench', [
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => '',
            'strict'   => false
        ]
但这并没有解决问题

有没有办法将SQLite设置为忽略迁移(针对mysql配置)中设置的
nullable()
值,这样我就可以在内存中使用SQLite快速运行单元测试

我的选择是:

Schema::table('users', function ($table) {
    $table->string('username', 132)->nullable();
  • 删除所有用于迁移的
    nullable()
    选项并添加默认值,这将花费很长时间
  • 使用mysql而不是sqlite,这样会慢得多

sqlite wiki页面说
PRAGMA strict=ON只是一个已经提出的建议。我遇到了同样的问题。