2016-11-09 3 views
2

CockroachDB - очень интересный распределенный SQL db, который предоставляет проводной протокол PostgreSQL. Поэтому я попытался подключить новый проект Rails к CockroachDB, используя классический жемчуг pg. К сожалению, простой rails db:create дал:Connect Rails to CockroachDB

/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? Благодаря!

+0

Альтернативой может быть использование [Продолжение] (https://github.com/jeremyevans/sequel) вместо ActiveRecord с Rails. Не знаю, будет ли CockroachDB работать с Sequel, но это еще один путь к возможно более ранней поддержке. – karmakaze

ответ

2

CockroachDB в настоящее время не работает с ActiveRecord, но мы надеясь поддержать его в ближайшем будущем. Мы отслеживаем проблемы, связанные с функциональностью ORM. on GitHub.

+0

Несколько месяцев спустя .. Теперь, похоже, официальная поддержка активной записи. См. Https://www.cockroachlabs.com/docs/build-a-ruby-app-with-cockroachdb-activerecord.html и https://github.com/cockroachdb/activerecord-cockroachdb-adapter. – mipmip

1

CockroachDB поддерживает client_encoding, но единственным значением, поддерживаемым сейчас, является «utf8».

Поскольку это довольно просто изменить можно либо вручную изменить значение, используемое в пг драгоценный камень или вы можете подать вопрос CockroachDB на GitHub проекта: http://github.com/cockroachdb/cockroach/issues/

2

Чтобы добавить к ответу Натана, что CockroachDB еще не работает с ActiveRecord, стоит упомянуть, что CockroachDB в настоящее время можно использовать через клиентов нижнего уровня, например Ruby's pg client.