1

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と、テーブルが存在しないというテキストが返されます。

データベース(ここでは開発)が開かれているかどうかはよくわかりません。どうやってそれを確認しますか?

4

2 に答える 2

7

率直に言うと、次のことを試すことができます。

DB.test_connection
=> true

のドキュメントにtest_connectionは次のように書かれています:

データベース接続の取得を試みます。成功した場合は true を返します。失敗した場合、おそらくエラーが発生します。サーバー引数が指定されている場合、指定されたサーバー/シャードへのデータベース接続の取得を試みます。

何年も前は、良性のクエリを使用して、接続が有効かどうかを確認していました。あなたが試すことができます:

DB["select datetime('now');"].first

どちらが返されますか:

{
    :"datetime('now')" => "2013-06-25 06:23:44"
}

おそらく、クエリが失敗した場合に発生する可能性のある例外をキャッチする必要がありますが、それは接続もダウンしていたことを示しています。

于 2013-06-25T06:36:44.113 に答える