ruby-on-rails – Rails 3.1,Postgres 9.1.4,hstore未知运算符错
发布时间:2020-12-17 01:26:16 所属栏目:百科 来源:网络整理
导读:我正在尝试将hstore数据列添加到现有的STI模型中. 类似于Postgres HStore Errors – Unknown Operator但据我所知,我已经安装了hstore扩展.我已经删除了数据库并从迁移重建它而没有错误,但规格仍然失败. Mac OS X 10.8.2Rails 3.1.10psql (PostgreSQL) 9.1.4
我正在尝试将hstore数据列添加到现有的STI模型中.
类似于Postgres HStore Errors – Unknown Operator但据我所知,我已经安装了hstore扩展.我已经删除了数据库并从迁移重建它而没有错误,但规格仍然失败. Mac OS X 10.8.2 Rails 3.1.10 psql (PostgreSQL) 9.1.4 user.rb has_many :targets def complete_targets targets.where("data @> (:key => :value)",key: 'complete',value: 'true') end targets.rb belongs_to :user serialize :data,ActiveRecord::Coders::Hstore setup_hstore迁移: class SetupHstore < ActiveRecord::Migration def self.up execute "CREATE EXTENSION IF NOT EXISTS hstore" end def self.down execute "DROP EXTENSION IF EXISTS hstore" end end 添加数据列迁移: class AddDataToRecords < ActiveRecord::Migration def change add_column :records,:data,:hstore end end 添加索引迁移: class AddHstoreIndexes < ActiveRecord::Migration def up execute "CREATE INDEX records_gin_data ON records USING GIN(data)" end def down execute "DROP INDEX records_gin_data" end end 错误: ActiveRecord::StatementInvalid: PG::Error: ERROR: operator does not exist: unknown => unknown LINE 1: ...records"."user_id" = 244 AND (data @> ('complete' => 'true')... 尝试通过直接查询创建扩展时的Navicat输出: CREATE EXTENSION hstore Error : ERROR: extension "hstore" already exists 解决方法
也许这是一个简单的数据类型问题,请尝试:
data @> ('complete'::text => 'true'::text) 但是=>运算符已弃用(并已在9.2中删除),最好使用hstore()格式: (data @> hstore('complete','true')) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |