簡體   English   中英

Laravel 5.1 - 使用SQLite測試數據庫在遷移時給出“沒有這樣的索引”錯誤()

[英]Laravel 5.1 - test database with SQLite gives 'no such index' error on migration down()

運行時,下面的架構構建的代碼工作完全 php artisan migratephp artisan migrate:rollback 本地分期 (生產等)的環境。 這將運行alter table語句來修改現有表。

注意:由於行為空,因此無需為category_id設置nullabledefault value

// 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');

我正在使用SQLite運行我的功能測試:memory:配置,當數據庫回滾時我收到以下錯誤(感謝DatabaseMigrations特性)

General error: 1 no such index: stores_category_id_index (SQL: DROP INDEX stores_category_id_index)

為什么會發生這種情況,我不得不在SQLite上配置一些我不知道的東西?

默認情況下,SQLite禁用外鍵支持。

您需要手動啟用它或使用其他數據庫。

Laravel 5.1:啟用SQLite外鍵約束

上面的鏈接討論了如何執行此操作,但基本上您需要找到一種方法在測試之前在功能測試環境中運行'PRAGMA foreign_keys = 1'。

免責聲明:我只在Laravel 5上試過這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM