Php Laravel 5.1-使用SQLite的测试数据库给出';没有此类索引';向下迁移时出错()

Php Laravel 5.1-使用SQLite的测试数据库给出';没有此类索引';向下迁移时出错(),php,sqlite,laravel,laravel-5,laravel-5.1,Php,Sqlite,Laravel,Laravel 5,Laravel 5.1,当运行php-artisan-migrate和php-artisan-migrate时,以下架构生成器代码可以完美地运行:在local和staging环境中回滚。这将运行altertable语句来修改现有表 注意:由于行为空,因此无需将可为空或默认值设置为类别id: 我正在使用:memory:配置使用SQLite运行功能测试,当数据库回滚时(由于数据库迁移特性),我得到以下错误 为什么会发生这种情况,我是否必须在SQLite上配置一些我不知道的东西?默认情况下,SQLite已禁用外键支持 您需要

当运行
php-artisan-migrate
php-artisan-migrate时,以下架构生成器代码可以完美地运行:在localstaging环境中回滚。这将运行
altertable
语句来修改现有表

注意:由于行为空,因此无需将
可为空
默认值
设置为
类别id

我正在使用
:memory:
配置使用SQLite运行功能测试,当数据库回滚时(由于
数据库迁移
特性),我得到以下错误


为什么会发生这种情况,我是否必须在SQLite上配置一些我不知道的东西?

默认情况下,SQLite已禁用外键支持

您需要手动启用它或使用其他数据库

上面的链接讨论了如何做到这一点,但本质上,您需要找到一种方法,在测试之前在功能测试环境中运行“PRAGMA foreign_keys=1”

免责声明:我只在Laravel 5上试用过

// up
$table->integer('category_id')->unsigned()->index();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');

// down
$table->dropForeign('stores_category_id_foreign');
$table->dropColumn('category_id');
General error: 1 no such index: stores_category_id_index (SQL: DROP INDEX stores_category_id_index)