我们正试图找出如果我们的Rails应用程序3.1.12打开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"
}
你可能想赶上如果查询失败时可能提出的任何异常,但是这将表明连接中断过。
迈克尔Berkowski的评论不愧为一个答案。
该Sequel.connect方法接受一个test: true
选项。 根据该文档 :
无论是用于测试是否有效的数据库连接可以(默认为false)
引擎盖下它会导致续集叫#test_connection
新的数据库对象。