我正在使用postgresql和rails 4学习thoughtbot关于多索引全文搜索的教程,而且我似乎无法让索引迁移工作。我试过了
disable_ddl_transaction!
def change
add_index(:cards, :object, using: 'gin', algorithm: :concurrently)
add_index(:cards, :content, using: 'gin', algorithm: :concurrently)
add_index(:tags, :name, using: 'gin', algorithm: :concurrently)
end和
def up
ActiveRecord::Base.connection.execute <<-SQL
CREATE INDEX CONCURRENTLY index_cards_on_object ON cards USING gin(to_tsvector('english', object));
CREATE INDEX CONCURRENTLY index_cards_on_content ON cards USING gin(to_tsvector('english', content));
CREATE INDEX CONCURRENTLY index_tags_on_name ON tags USING gin(to_tsvector('english', name));
SQL
end
def down
ActiveRecord::Base.connection.execute <<-SQL
DROP INDEX index_cards_on_object;
DROP INDEX index_cards_on_content;
DROP INDEX index_tags_on_name;
SQL
end我得到以下错误(逐级)
未定义对象:错误:数据类型字符变化没有访问方法"gin“的默认操作符类
和
ActiveRecord::StatementIn有效性: PG::UndefinedObject: ERROR: data类型字符变量没有用于访问方法"gin“PG::SyntaxError: ERROR:语法错误或接近"CREATE”的默认操作符类
欢迎所有的帮助和洞察力,谢谢
发布于 2019-09-17 14:34:53
自从你问这个问题以来已经有4年多了,但我还是在这个帖子中找到了同样的问题的答案。由于我已经设法处理它,我将与您和其他人分享解决方案,在这里结束。
尝试将这些扩展添加到迁移文件中的change或up方法中。请注意,并不是每一个都需要,但我已经看到,有时一个是不够的。btree_gin在我的案子里工作过。试试看!
enable_extension "plpgsql"
enable_extension "btree_gin"
enable_extension "pg_trgm"
enable_extension "fuzzystrmatch"
enable_extension "btree_gist"https://stackoverflow.com/questions/30790949
复制相似问题