2017-09-16 93 views
0

我已經爲一些分析師構建了一個工具,其中包括將一堆由分析師生成的csv文件放入SQLite數據庫作爲第一步。 csv文件對應於表,並且架構中有許多外鍵約束和其他完整性檢查。如何從SQLite獲取更詳細的約束失敗斷言?

用戶將是相當聰明和技術的人員,但他們不一定知道關於關係數據庫的任何信息,並且SQlite默認生成的錯誤消息不夠明確。理想情況下,應該從約束失敗消息中明確解決問題。

例子:

scheduled_duration.csv:9: INSERT failed: FOREIGN KEY constraint failed 

我想產生一個消息更像是:

scheduled_duration.csv:9: Referenced column training_track ('9345') does not exist. 

架構已經知道失敗的約束這些額外的信息。我忽略了一個簡單的方法來獲得這樣一個改進的信息?爲了獲得更好的錯誤消息,必須最終手動實現對數據的完整性檢查將是一個巨大的痛苦。

回答

1

由於deferred foreign key constraints,SQLite必須能夠記住任意數量的FK約束違規。爲了使實現更容易,這是通過一個錯誤計數器來實現的,並且即使實際上沒有FK約束被延遲,也可以使用它。

所以在當前的實現中,不可能獲得更好的錯誤消息。