使用rails的heroku pg错误,说“text”不允许使用类型修饰符

时间:2012-04-18 04:08:36

标签: ruby-on-rails postgresql heroku

我收到错误

PGError: ERROR:  type modifier is not allowed for type "text"
LINE 1: ...ng(255), "desc" character varying(255), "content" text(255),...

当我做一个heroku run rake db:reset

据我所知,postgresql需要一个无限类型的'text',在我最新的迁移文件中我有...

class ChangeLessonsTable < ActiveRecord::Migration
    def change
        change_table :lessons do |t|
            t.change        :content, :text, :limit => nil
        end
    end
end

我仍然不断收到错误。任何想法为什么?我运行rake db:reset,rake db:migrate和git push来确保我的本地数据库发生了变化。然后我运行git heroku push和heroku运行rake db:reset但我一直收到这个错误。我错过了什么吗?感谢

1 个答案:

答案 0 :(得分:4)

您应该可以完全取消:limit

class ChangeLessonsTable < ActiveRecord::Migration
    def change
        change_table :lessons do |t|
            t.change :content, :text
        end
    end
end

如果这不起作用,那么您可以尝试单独的向上和向下操作:

def up
    change_column :lessons, :content, :text
end
def down
    change_column :lessons, :content, :string
end

顺便说一下,如果你的目标是PostgreSQL,你应该只使用:text并忘记:string(AKA varchar)列类型,PostgreSQL会在内部对它们进行相同的处理。唯一一次你应该烦扰varchar / :string的是你的数据完整性要求字符串大小的特定上限。