使用SQLite对mysql迁移设置进行单元测试
我想使用SQLite进行PHPunit测试。我们使用的是使用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
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代码>只是一个已经提出的建议。我遇到了同样的问题。