2013-05-11 52 views
2

我正在使用bash腳本(特別是,bats)來測試我寫的一些代碼。在命令行中使用sqlite中的保存點

因爲我想避免在測試中的干擾,我使用的安裝和拆卸函數(蝙蝠提供)所示:

setup() { 
    sqlite3 test.db "SAVEPOINT pre_test" 
} 

teardown() { 
    sqlite3 test.db "ROLLBACK TO SAVEPOINT pre_test" 
} 

不幸的是,回滾的時候,我得到:

Error: no such savepoint: pre_test 

但是,如果我在SQLite中啓動一個交互式會話,我可以像我所期望的那樣使用保存點。我想這意味着在命令行程序退出後,所有的保存點都會被遺忘。

有什麼辦法解決這個問題嗎?

回答

2

鑑於documentation refers to savepoints as similar to transactions我的印象是保存點不會超出單個sqlite會話持續。

該文件沒有特別說明這一點,但exhaustive explanation of how transactions處理意味着整個這應該都包含在單一會話中。

鑑於一個不活動的數據庫可以被簡單地複製cp precious.db pre_test.db看來,這似乎是明顯的方式來實現設置。拆解僅僅是rm pretest.db

+0

* facepalm *我怎麼沒有想到這一點。謝謝! – hdgarrood 2013-05-11 20:51:10