尝试从Rails连接到Sql Server。到目前为止没有工作。
我被建议将此行添加到Gemfile
(作为已知错误的修复):
gem 'activerecord-sqlserver-adapter', git: 'https://github.com/Desarrollo-CeSPI/activerecord-sqlserver-adapter.git'
由于我有一个代理,我没有这样做,但必须执行一个解决方法:从该链接下载zip,然后将其解压缩到一个名为AR的目录中的rails项目中,在CMD中迁移到AR内部并运行
gem build activerecord-sqlserver-adapter.gemspec
在此之后,创建了一个名为activerecord-sqlserver-adapter-3.2.12.gem
的宝石,所以我输入了
gem install activerecord-sqlserver-adapter-3.2.12.gem.
成功。此时,没有引用gemfile中的任何适配器。 rails s
成功:booting WEBrick, Rails 4.1.1 starting in development on...
。
然而,当我打开localhost:3000
时,我看到了
ActiveRecord::Connection not Established error
我应该提到database.yml文件(来自config)包含:
development:
adapter: activerecord-sqlserver-adapter
mode: odbc
dsn: odbc_new
host: localhost
database: cms
pool: 5
username: gst1
password: pwd1234!@
cms数据库存在,我添加了用户和密码。这里缺少什么?为什么连接错误?哦,我还打开了控制面板(Windows 7) - 管理工具 - 设置数据源(ODBC) - 并添加了一个带有Sql Server身份验证的'odbc_new'条目,在那里添加了用户和密码,默认db:cms并运行连接完成前测试:成功。
我不明白为什么或者如果我真的需要在那里创建和添加这个odbc数据源,如果我在database.yml文件中指定用户和密码。你能帮忙解决这个问题吗?非常感谢提前。
更新:
我刚刚将adapter: sql server
添加到database.yml
。我仍然得到同样的错误。除了保存之外,我是否必须执行某些操作来验证database.yml
文件中的更改?
我还应该向Gemfile
添加一些内容吗?我是否还需要在activerecord-sqlserver-adapter-3.2.12.gem
中添加本地适配器(称为gemfile
)(取自本地驱动器 - 而不是rubygems.org
)?我觉得错误可能与此有关。
不确定我是否需要在gem文件中执行这样的操作
gem 'activerecord-sqlserver-adapter-3.2.12.gem', :path => 'C:\Site\simple_cms\AR'
但如果我这样做,请运行
C:\Sites\simple_cms>bundle install
之后出错:
Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Could not find gem 'activerecord-sqlserver-adapter-3.2.12.gem (>= 0)
x86-mingw32' in source at C:/Sites/simple_cms/AR.
Source does not contain any versions of
'activerecord-sqlserver-adapter-3.2.12.gem (>= 0) x86-mingw32'`
UPDATE-我也试着像这样指定版本号: `gem'activerecord-sqlserver-adapter','3.2.12',: path => 'C:\网站\ simple_cms \ AR' 但又是一个错误:
`C:\ Users \ acm> cd C:\ Sites \ simple_cms
C:\Sites\simple_cms>rails s
←[31mBundler could not find compatible versions for gem "activerecord":
In snapshot (Gemfile.lock):
activerecord (4.1.1)
In Gemfile:
activerecord-sqlserver-adapter (= 3.2.12) x86-mingw32 depends on
activerecord (= 4) x86-mingw32
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
←[0m
现在,在我运行bundle update
之后,又出现了另一个错误:
C:\Sites\simple_cms>bundle update
Fetching gem metadata from https://rubygems.org/...........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Bundler could not find compatible versions for gem "activesupport":
In Gemfile:
activerecord-sqlserver-adapter (= 3.2.12) x86-mingw32 depends on
activerecord (= 4) x86-mingw32 depends on
activesupport (= 4.0.0) x86-mingw32
rails (= 4.1.1) x86-mingw32 depends on
activesupport (4.1.1)
答案 0 :(得分:1)
签出this question bundler似乎对它尝试从本地:path
安装的宝石感到挑剔。您可以尝试将版本号指定为
gem 'activerecord-sqlserver-adapter', '3.2.12', :path => 'C:\Site\simple_cms\AR'
如果bundler
认为无法解析此宝石,我认为您的加载路径不会出现问题。