[英]How do we verify if Sequel.connect opened our SQLite3 database in Rails?
我們試圖找出我們的 Rails 3.1.12 應用程序是否使用 gem 續集打開 SQLite3 數據庫(3.6 或更高版本)。 這是我們所做的:
rails console
在 Rails 控制台會話中,鍵入以下命令:
sequel = Sequel.connect('sqlite://development')
它返回:
=> #<Sequel::SQLite::Database: "sqlite://development">
sequel.class 也返回:
=> Sequel::SQLite::Database
但是試圖從數據庫中選擇時sequel.execute
或檢查表sequel.schema
,返回文中說,該表不存在。
我們不太確定數據庫(此處的開發)是否已打開。 我們如何檢查?
我想說你可以試試:
DB.test_connection
=> true
test_connection
的文檔說:
嘗試獲取數據庫連接。 如果成功則返回真。 如果不成功,可能會引發錯誤。 如果給出了服務器參數,則嘗試獲取到給定服務器/分片的數據庫連接。
多年前,我們會使用良性查詢來判斷連接是否有效。 你可以試試:
DB["select datetime('now');"].first
返回:
{
:"datetime('now')" => "2013-06-25 06:23:44"
}
您可能希望捕獲在查詢失敗時可能引發的任何異常,但這也表明連接也已關閉。
從 5.0.0 版本開始,Sequel 默認會驗證連接(現在test
選項的默認值為true
)。
正如Michael Sequel.connect
在他們的評論中指出的那樣, Sequel.connect
方法接受一個布爾test
選項。 該選項在 Sequel 5.0.0 之前默認為 false。 當前的文檔說:
是否測試可以建立有效的數據庫連接(默認為 true)
設置后,此選項會導致 Sequel 在新的 db 對象上調用#test_connection
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.