簡體   English   中英

我們如何驗證 Sequel.connect 是否在 Rails 中打開了我們的 SQLite3 數據庫?

[英]How do we verify if Sequel.connect opened our SQLite3 database in Rails?

我們試圖找出我們的 Rails 3.1.12 應用程序是否使用 gem 續集打開 SQLite3 數據庫(3.6 或更高版本)。 這是我們所做的:

  1. rails console
  2. 在 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.

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