我有一个远程SQLSERVER实例,我想从我在heroku上托管的rails应用程序连接。 我的gemfile:
gem 'activerecord-sqlserver-adapter', '~> 3.2.12'
gem 'tiny_tds'
的database.yml
production:
adapter: sqlserver
mode: dblib
dataserver: host.database.windows.net
database: items
username: username@host
password: password
azure: true
production.rb
dbconfig = YAML.load(ERB.new(File.read(File.join("config","database.yml"))).result)
ActiveRecord::Base.establish_connection dbconfig['production']
但是我在部署过程中遇到了以下错误:
编写config / database.yml以从DATABASE_URL读取
Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
LoadError: Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (sqlite3 is not part of the bundle. Add it to Gemfile.)
似乎Active记录需要sqlite3但是如果我有tiny_tds它应该使用sql server。
在开发环境中,一切正常。 当然有一些我想念的东西。
更新
我已经设置了自定义buildpack BUILDPACK_URL:https://github.com/firmhouse/heroku-buildpack-ruby-freetds.git 和DATABASE_URL配置var。
更新2
在deploing中显示dbconfig var,显示此
{"production"=>
{"adapter"=>"sqlite3",
"database"=>"dbname",
"username"=>"user",
"password"=>"pass",
"host"=>"127.0.0.1"}}
似乎heroku覆盖了我的database.yml文件,有什么建议吗?
更新3
我已经设置了DATABASE_URL = sqlserver // user:pass @ host:1433 / database是不是错了?
答案 0 :(得分:2)
我遇到了同样的问题,终于找到了答案。
你必须在下面添加后缀:
?编码= UFT-8和;天蓝=真
所以,你的database_url将是这样的:
?<强> SQLSERVER:// [用户]:[口令] @ [server.database.windows.net]:1433 / [数据库]编码= UFT-8和;天蓝=真强>
希望有所帮助
答案 1 :(得分:0)
在Heroku上使用此FreeTDS buildpack
要使用此buildpack,您可以在创建Heroku应用程序时传递一个选项:
heroku create my_new_sqlserver_app --buildpack https://github.com/firmhouse/heroku-buildpack-ruby-freetds.git
或者对于当前的应用:
heroku config:add BUILDPACK_URL=https://github.com/firmhouse/heroku-buildpack-ruby-freetds.git
配置数据库连接
在创建应用程序或设置现有应用程序以使用buildpack之后,您需要修改
DATABASE_URL
config变量以指向您的sqlserver实例。我们目前使用的是SQL Server 2008 Express版:heroku config:add DATABASE_URL=sqlserver://username:password@sqlserver_host:1433/database_name