【问题标题】:heroku pg error using rails, saying type modifier is not allowed for "text"使用rails的heroku pg错误,说“文本”不允许使用类型修饰符
【发布时间】:2012-04-18 04:08:36
【问题描述】:

我得到了错误

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

【问题讨论】:

    标签: ruby-on-rails postgresql heroku


    【解决方案1】:

    你应该可以完全不用: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 的情况是当您的数据完整性需要对字符串大小设置特定上限时。

    【讨论】:

    • 谢谢。我最终做了后者。我的 heroku db:reset 仍然没有用,heroku db:migration 也没有。我不得不....在本地数据库上执行 db:migration,然后执行 heroku db:push
    猜你喜欢
    • 2011-11-04
    • 2016-05-07
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2011-10-13
    • 2016-04-27
    • 2015-01-18
    相关资源
    最近更新 更多