我们正在尝试确定我们的 Rails 3.1.12 应用程序是否可以使用 gem sequel 打开 SQLite3 数据库(3.6 或更高版本)。这是我们所做的:
rails 控制台
在 Rails 控制台 session 中,键入以下命令:
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
的文档说:
Attempts to acquire a database connection. Returns true if successful. Will probably raise an Error if unsuccessful. If a server argument is given, attempts to acquire a database connection to the given server/shard.
几年前,我们使用良性查询来判断连接是否有效。你可以试试:
DB["select datetime('now');"].first
哪个返回:
{
:"datetime('now')" => "2013-06-25 06:23:44"
}
您可能希望捕获查询失败时可能引发的任何异常,但这表明连接也已断开。
关于ruby - 我们如何验证 Sequel.connect 是否在 Rails 中打开了我们的 SQLite3 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287623/