【发布时间】:2020-05-13 22:18:08
【问题描述】:
我目前正在尝试为我们的团队设置 Redmine 安装。我似乎无法从 Rails 中建立到我们的 MSSQL 服务器的连接。
$ RAILS_ENV=production bundle exec rake db:migrate
rake aborted!
TinyTds::Error: closed connection
/home/admin/.rbenv/versions/2.6.6/bin/bundle:23:in `load'
/home/admin/.rbenv/versions/2.6.6/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我安装了 sqlcmd 来测试 Rails 外部的连接,并且我设法登录并创建和删除了一个表作为测试。我怀疑这是我的 database.yml。我必须连接到 MS SQL 实例,并且服务器在不同的端口上运行。尝试稍微调整一下设置,但无法正常工作。
数据库.yml
production:
adapter: sqlserver
database: Redmine01
dataserver: server\instance
port: ####
username: user
password: "password"
encoding: utf8mb4
虽然我以前玩过 Rails,但我对 Rails 的了解绝对有限,而且我从未建立到 MS SQL 服务器的连接或使用 TinyTds gem,因此我怀疑我根本没有正确配置我的环境。因此我的帖子在这里。如果你们中的一位 Rails 专家可以查看数据库配置,我将不胜感激。我能找到的关于配置 rails 以连接到命名实例并结合非标准 SQL 端口的信息是有限的。
作为旁注,对于 sqlcmd,我使用“-S server\instance,####”来建立连接。我当然也在 database.yml 中尝试过,但没有任何成功。
【问题讨论】:
-
我们可以为您提供的调试数据库连接的帮助非常有限。有很多未知数。
-
很高兴提供任何可以提供帮助的进一步信息。知道我的 database.yml 是否正确设置也是一个很好的输入,因为我知道我必须进一步研究,而不仅仅是在 .yml 文件中错误地定义了实例和端口(如上所示)
-
如果不知道您要连接的数据库的确切配置,我们无法知道您的 database.yml 是否设置正确,而您无法真正与我们分享。
-
我知道这涉及到很多变量,这就是为什么我在 Rails 之外测试连接,以确保它不是网络问题。任何朝着正确方向的推动都将受到高度赞赏,而不是在这里寻找勺子喂养的解决方案。我真的只是迷失在哪里进一步寻找,因为我发现 database.yml 的格式对于 MS SQL 连接是正确的。 database.yml 中是否还有其他我应该知道我遗漏的参数?有没有办法通过 TinyTds 获得比“关闭连接”更详细的消息?
标签: ruby-on-rails sql-server tiny-tds