2013-09-10 2 views
0

Я написал свой миграционный файл, чтобы изменить тип столбца следующегоRake DB: ошибка миграции при изменении типа столбца

class ChangeColumnTypeInMyTable < ActiveRecord::Migration 
    def self.up 




    execute <<-SQL 
     ALTER TABLE batches 
     ALTER COLUMN updated_by int 
     SQL 

    execute <<-SQL 
     ALTER TABLE batches 
      ALTER COLUMN created_by int 
    SQL 

end 

def self.down 
    end 
end 

, но это дает мне ошибку говоря PG::SyntaxError: ERROR: syntax error at or near "int" LINE 2: ALTER COLUMN updated_by int я не смог найти ошибку. Спасибо заранее

ответ

0

Я думаю, слово TYPE здесь нужна ...

Ссылка: http://www.postgresql.org/docs/8.0/static/sql-altertable.html

class ChangeColumnTypeInMyTable < ActiveRecord::Migration 

    def self.up 
    execute <<-SQL 
    ALTER TABLE mt940_batches 
    ALTER COLUMN updated_by TYPE int 
    SQL 

    execute <<-SQL 
    ALTER TABLE mt940_batches 
    ALTER COLUMN created_by TYPE int 
    SQL 
    end 

    def self.down 
    end 
end 
+0

гм получаю эту ошибку PG :: DatatypeMismatch: ОШИБКА: столбец «updated_by» не может быть приведен к типу целого : ALTER TABLE mt940_batches ALTER COLUMN updated_by TYPE ИНТ – Kalanamith

+0

ли вы пытаетесь решение, предоставленное @GraemeMcLean? Это на самом деле делает явное приведение. –

+0

ну um получить ту же ошибку :( – Kalanamith

0

Как вы используете SQL так, соответственно, вам нужно использовать ActiveRecord в этом случае:

def self.up 
connection = ActiveRecord::Base.connection() 
connection.execute(put_your_sql_query_here) 
end 

Надеюсь, вы сможете легко понять.

Смежные вопросы