将 Rails 连接到 CockroachDB

Connect Rails to CockroachDB

CockroachDB 是一个非常有趣的分布式 SQL 数据库,它公开了 PostgreSQL 有线协议。所以我尝试使用经典的 pg gem 将一个新的 Rails 项目连接到 CockroachDB。不幸的是,一个简单的 rails db:create 给出了:

/home/fengye87/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:671: warning: Failed to set the default_internal encoding to UTF8: 'ERROR:  unknown variable: "CLIENT_ENCODING"
'
invalid encoding name: unicode

所以我猜这表明 CockroachDB 不支持 CLIENT_ENCODING 变量。问题是:是否可以绕过在 pg 中设置这些变量?有没有人设法将 Rails 连接到 CockroachDB?谢谢!

CockroachDB 确实支持 client_encoding,但目前唯一支持的值是 "utf8"。

由于修改起来相当简单,您可以手动更改 pg gem 中使用的值,或者您可以向项目的 GitHub 提交 CockroachDB 问题:http://github.com/cockroachdb/cockroach/issues/

CockroachDB 目前不能与 ActiveRecord 一起使用,但我们希望在不久的将来支持它。我们正在跟踪与 ORM 功能相关的问题 on GitHub

要补充 Nathan 的回答,即 CockroachDB 还不能与 ActiveRecord 一起使用,值得一提的是,CockroachDB 目前可通过较低级别的客户端使用,例如 Ruby's pg client

CockroachDB 现在与 Active Record 兼容:

https://www.cockroachlabs.com/blog/build-an-app-with-active-record-cockroachdb/