我们如何验证是否Sequel.connect打开了我们对Rails sqlite3的数据库?(How

2019-10-18 06:58发布

我们正试图找出如果我们的Rails应用程序3.1.12打开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 ,返回文中说,该表不存在。

我们不能肯定如果数据库(发展这里)已经打开与否。 我们如何检查?

Answer 1:

随口说说我会说你可以试试:

DB.test_connection
=> true

对于文档test_connection说:

尝试获取数据库连接。 如果成功返回真。 如果不成功可能会引发错误。 如果服务器指定参数,尝试获取数据库连接到给定服务器/碎片。

几年前,我们会使用一个良性的查询来告诉我们,如果连接是活的。 你可以试试:

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

返回:

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

你可能想赶上如果查询失败时可能提出的任何异常,但是这将表明连接中断过。



Answer 2:

迈克尔Berkowski的评论不愧为一个答案。

该Sequel.connect方法接受一个test: true选项。 根据该文档 :

无论是用于测试是否有效的数据库连接可以(默认为false)

引擎盖下它会导致续集叫#test_connection新的数据库对象。



文章来源: How do we verify if Sequel.connect opened our SQLite3 database in Rails?