0

我得到了错误

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

当我做一个 heroku 运行 rake db:reset

我知道 postgresql 需要无限类型的“文本”,在我最新的迁移文件中,我有......

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 但我不断收到该错误。我错过了什么吗?谢谢

4

1 回答 1

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的情况是当您的数据完整性需要对字符串大小设置特定上限时。

于 2012-04-18T04:33:04.073 回答