Ошибка при миграции при добавлении функций SQL в Rails

#ruby-on-rails #ruby #postgresql

#ruby-on-rails #ruby #postgresql

Вопрос:

У меня есть следующие 2 файла:

20161009180554_add_process_functionst_to_db.rb

 class AddProcessFunctionstToDb < ActiveRecord::Migration
  def up
    funcs = File.read(Rails.root.join('db', 'migrate', 'processfunctions.sql').to_s)
    execute funcs
  end
end
  

processfunctions.sql

 drop function if exists retention_data(ref refcursor, shopId integer);
create or replace function retention_data(ref refcursor, shopId integer) returns refcursor as $$
    begin
...
    return ref;
    end;
$$ language plpgsql;
  

Я пытаюсь добавить функцию в processfunctions.sql в базу данных. Но когда я запускаю

 rake db:migrate
  

Я получаю следующую ошибку:

 /app/vendor/bundle/ruby/2.2.0/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  syntax error at or near ""
LINE 1: 
        ^
: 
drop function if exists retention_data(ref refcursor, shopId integer);
  

после «Строки 1:» в ошибке (на что указывает стрелка) находится прямоугольник. Например, что бы вы увидели, если бы у вас не был установлен правильный шрифт.

Я удалил пустую строку в строке 1 и сменил CRLF на LF, но ни один из них ничего не изменил

Комментарии:

1. processfunctions.sql Содержит ли он то, что вы думаете? Возможно, взгляните на это с cat -vet помощью или посмотрите на шестнадцатеричный дамп.

2. Круто, это сработало! Спасибо