从heroku连接到sqlserver

时间:2014-06-25 13:22:04

标签: ruby-on-rails sql-server heroku rails-activerecord tiny-tds

我有一个远程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是不是错了?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,终于找到了答案。

你必须在下面添加后缀:

编码= UFT-8和;天蓝=真

所以,你的database_url将是这样的:

<强> SQLSERVER:// [用户]:[口令] @ [server.database.windows.net]:1433 / [数据库]编码= UFT-8和;天蓝=真

希望有所帮助

答案 1 :(得分:0)

您需要use a custom buildpack

  

在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