Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails SQLite3::SQLException:无法识别的令牌“:&引用;:_Ruby On Rails_Sqlite_Pg Search - Fatal编程技术网

Ruby on rails SQLite3::SQLException:无法识别的令牌“:&引用;:

Ruby on rails SQLite3::SQLException:无法识别的令牌“:&引用;:,ruby-on-rails,sqlite,pg-search,Ruby On Rails,Sqlite,Pg Search,我在运行pg_搜索时遇到问题。我认为它设置正确,但由于某些原因,在尝试运行搜索时,会出现以下情况: SQLite3::SQLException: unrecognized token: ":": SELECT "courses".*, ((ts_rank((to_tsvector('simple', coalesce("courses"."title"::text, ''))), (to_tsquery('simple', ''' ' || 'finance' || ' ''')), 0)))

我在运行pg_搜索时遇到问题。我认为它设置正确,但由于某些原因,在尝试运行搜索时,会出现以下情况:

SQLite3::SQLException: unrecognized token: ":": SELECT "courses".*, ((ts_rank((to_tsvector('simple',
coalesce("courses"."title"::text, ''))), (to_tsquery('simple', ''' ' || 'finance' || ' ''')), 0))) AS
pg_search_rank FROM "courses"  WHERE (((to_tsvector('simple', coalesce("courses"."title"::text, '')))
@@ (to_tsquery('simple', ''' ' || 'finance' || ' ''')))) ORDER BY pg_search_rank DESC, "courses"."id" ASC
课程模式:

include PgSearch
scope :by_course_title, lambda { |ttl|
  _by_course_title(ttl) if ttl.present? }
pg_search_scope :_by_course_title, against: :title
搜索控制器:

def index
    @course = Course.by_course_title(params[:fname])
end
在html中:

<% @course.each do |courses| %>
    <div><%= courses %></div>
<% end %>

这是否可能是由…引起的?如果我只保留,页面将加载并显示:

#<ActiveRecord::Relation:0x....>
#

我应该在传递.each函数之前转换生成的数组吗?

您有一个特定于PostgreSQL的库(
PgSearch
),并且使用SQLite3作为数据库。选择一个或另一个,但不能同时选择两个


coalesce(“courses”“title”“)
中的强制转换运算符
仅对PostgreSQL有效。使用SQLite,您可以完全省去强制转换(
::text
部分),但如前所述,除非切换到PostgreSQL数据库,否则您可能无法使
PgSearch
正常工作。

您有一个特定于PostgreSQL的库(
PgSearch
),并且使用SQLite3作为您的数据库。选择一个或另一个,但不能同时选择两个


coalesce(“courses”“title”“)
中的强制转换运算符
仅对PostgreSQL有效。使用SQLite,您可以完全省去强制转换(
::text
部分),但如前所述,除非切换到PostgreSQL数据库,否则您可能无法使
PgSearch
正常工作。

哦,我明白了。我最终学习了基本的SQL,并创建了自己的搜索代码。我对这一点还是很陌生,我认为SQLite和PostgreSQL是以某种方式联系在一起的。它们都是支持ANSI SQL的关系数据库系统(大部分情况下),这就是它们之间关系的程度。如果这对你有帮助,请标记为已接受。哦,我明白了。我最终学习了基本的SQL,并创建了自己的搜索代码。我对这一点还是很陌生,我认为SQLite和PostgreSQL是以某种方式联系在一起的。它们都是支持ANSI SQL的关系数据库系统(大部分情况下),这就是它们之间关系的程度。如果这对您有帮助,请标记为已接受。