ruby-on-rails - 连接失败,数据库名称为 '.'

标签 ruby-on-rails ruby sql-server activerecord

我一直在尝试在我们的一个 Rails 应用程序中调试 SQL Server 数据库错误。问题是数据库名称,如添加到 database.yaml 中,有一个 '.' ('testdb.v1')。它导致错误:

TinyTds::Error: Database 'testdb' does not exist. Make sure that the name is entered correctly.

认为这是一个 YAML 与 Rails 的问题,引用了 '.'字符,我在 Rails 控制台中打开应用程序并尝试了我能想到的每一种 Ruby 引用,但每次我都会遇到相同的错误。

在我的 model.connection_config 中数据库名称分配的某处,'.'被解释为格式说明符,后缀从名称中删除。 model.connection_config['database']'testdb.v1',但显然这不是交给 SQL Server 的。

我不确定这是 Rails 问题还是 SQL Server 问题,尽管我一起使用的 C# 应用程序设法打开数据库没有问题。因此,我认为这是一个 rails/ActiveRecord 问题。不幸的是,我没有更改数据库名称的选项。

有没有办法引用 '.'字符,以便它将保持“。”以及数据库名称中的后缀?

最佳答案

进一步调查将我带到了 activerecord-sqlserver-adapter 的 github 页面

在那里,我发现了问题 230226 ,和我有类似的问题。显然使用“。”在数据库中,表或列名会出现类似的问题。由于这些是在 2012 年创建的并且仍然开放,因此看起来不会很快出现修复。在评论中有一些想法可以通过猴子修补使其正常工作。猜猜这就是我必须采取的方法才能使它正常工作。

更新:对于遇到类似问题的任何人,数据库名称是唯一的问题(不是表或列),我们采用的解决方案是围绕 sqlserver-adapter 进行最终运行。我们为每个数据库创建了一个 SQL 用户,并为该用户分配了一个默认数据库。然后,我们连接到用户登录名,但将数据库名称保留为空。在这种情况下,SQL Server 将连接到默认数据库。

关于ruby-on-rails - 连接失败,数据库名称为 '.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889842/

相关文章:

ruby-on-rails - 是否可以在 Heroku 上使用修改 nginx 配置文件并使用 X-Accel-Redirect?

ruby-on-rails - 鲁比和拉玛吉克。如何将ImageList添加到ImageList中?创建列表的列表

c# - 如何实现在选择时加载元素的下拉框?

sql - 更新标识列中的值

ruby-on-rails - 搜索具有多个值的多个字段

ruby-on-rails - 使用嵌套资源或在资源上有一个集合

ruby-on-rails - 对嵌套关注点的循环依赖

ruby - 如何判断哪个架构是 ruby​​ 版本?

ruby-on-rails - Bundler 在创建 rails new APP 时抛出错误

sql-server - 使用 SQL Server 作为图像存储