PG语法错误

时间:2013-06-14 07:02:30

标签: ruby-on-rails postgresql syntax-error

我一直在尝试将我学校的rails上的fedena project从mySQL转换为postgreSQL以进行heroku部署,并遇到以下错误:

显示第40行引发的app / views / class_timings / index.html.erb:

PG::Error: ERROR:  syntax error at or near "."
LINE 1: SELECT `batches`.*,CONCAT(courses.code,'-',batches.name) as ...
                        ^

: SELECT `batches`.*,CONCAT(courses.code,'-',batches.name) as course_full_name FROM "batches"   INNER JOIN "courses" ON "courses".id = "batches".course_id  WHERE ("batches"."is_deleted" = 'f' AND "batches"."is_active" = 't')  ORDER BY course_full_name

摘录来源(第40行):

37:     <label ><%= t('select_a_batch') %>:</label>
38:     <div class="text-input-bg">
39:       <%= select :batch, :id,
40:         @batches.map {|b| [b.full_name, b.id] },
41:         {:prompt => "#{t('common')}"},
42:         {:onchange => "#{remote_function(
43:         :url => { :action => 'show' },
44:         :with => "'batch_id='+value",
45:         :before => "Element.show('loader')",
46:         :success => "Element.hide('loader')"
47:         )}"} %>

显然,我是编程新手!请帮忙。

控制器:

class_timings_controller.rb

  def index
    @batches = Batch.active
    @class_timings = ClassTiming.find(:all,:conditions => { :batch_id => nil,:is_deleted=>false}, :order =>'start_time ASC')
  end

1 个答案:

答案 0 :(得分:2)

反引号`和CONCAT函数都是非标准SQL。

如果你真的想引用表名,你需要使用双引号。在Postgresql中有一个名为||的文本连接运算符。

所以你会有类似的东西:

SELECT "batches".*, (courses.code || '-' || "batches"."name") as course_full_name ...

保持一致 - 如果您在某些地方引用表名,请在任何地方引用它们。

在您至少在基本级别上理解两个数据库的语法之前,这将会很慢。据推测,由于您使用的是rails,因此没有太多的原始SQL。

提示:留出几个小时,浏览两个系统的手册。至少你会知道在哪里查看细节。