【发布时间】:2017-08-03 23:23:14
【问题描述】:
我最初只使用一个数据库,但我需要将客户端添加到另一个数据库,即 SQL Server 数据库。我能够连接,但我遇到了一些问题。
原始完整数据库.yml
development:
adapter: postgresql
database: martin_development
username: *******
password: *******
pool: 5
timeout: 5000
development_sec:
adapter: sqlserver
host: *******
port: 1433
database: Database1
username: *******
password: *******
我收到以下错误:
TinyTds::Error(数据库“DATABASE1”不存在。确保名称输入正确。)
如果我取出数据库名称,它看起来像这样:
development_sec:
adapter: sqlserver
host: *******
port: 1433
database:
username: *******
password: *******
一切似乎都运行正常,我没有收到任何关于找不到数据库的错误消息。但是,该数据库确实存在于客户端。
我对如何从我的客户 SQL Server 数据库中提取数据感到困惑。我正在尝试使用我找到的一些资源,因此到目前为止我的项目文件看起来像这样:
模型(Mssql.rb)
class MssqlBase < ActiveRecord::Base
establish_connection :development_sec
self.abstract_class = true
end
模型(site.rb)
class Site < MssqlBase
end
控制器(sites_controller.rb)
class SitesController < ApplicationController
def index
@sites = Site.all
@hash = Gmaps4rails.build_markers(@sites) do |site, marker|
marker.lat site.latitude
marker.lng site.longitude
end
end
end
数据库.yml
development:
adapter: postgresql
database: martin_development
username: *******
password: *******
pool: 5
timeout: 5000
development_sec:
adapter: sqlserver
host: *******
port: 1433
database:
username: *******
password: *******
我的目标是开始从数据库中提取数据,但到目前为止,就我的文件而言,我收到以下错误:
ActiveRecord::StatementInvalid(TinyTds::Error: Invalid object name 'sites'.: SELECT [sites].* FROM [sites]):
所以只是回顾一下,我需要它从“DATABASE1”中读取,但它说它不存在。当我出于某种原因将其遗漏时,它正在与服务器连接,但我不知道哪个数据库。现在我正在尝试提取数据但收到无效的语句。任何帮助将不胜感激。
【问题讨论】:
-
您连接到哪个版本的 MSSQL?以及您使用什么宝石来连接。据我所知,你不能像 MySQL 那样在没有安装适配器的情况下进行设置。
-
我正在使用 tiny-tds gem 和 activerecord -sqlserver-adapter。它的版本是2008 r2。
-
你可以尝试使用 irb 连接:
require 'rubygems';require 'tiny_tds';client = TinyTds::Client.new :username => '*******', :password => '*****', :host => 'host_url';显然用你的信息替换用户名、密码和主机 URL。 -
这是我收到的消息 => #<:client:0x00564a1d9c8ed0>:hash, :symbolize_keys=>false, :cache_rows=>true, :timezone= >:local, :empty_sets=>true}>
-
看来 Tiny TDS 正在创建连接。当您执行此类故障排除时,我建议您编辑您的问题并在原始帖子的底部添加您尝试过的内容和结果。这样人们就不必通读所有这些 cmets 来找出您尝试过的内容。
标签: ruby-on-rails sql-server ruby database tiny-tds