【问题标题】:Rails 3/Heroku - Error resetting database on push to heroku - 'type modifier is not allowed for type "text"'Rails 3/Heroku - 推送到 Heroku 时重置数据库时出错 - '类型修饰符不允许用于类型“文本”'
【发布时间】:2011-11-04 17:31:46
【问题描述】:

我正在尝试使用 sqlite3 从 Rails 3 应用程序heroku rake db:reset,但我收到以下错误:

rake aborted!
PGError: ERROR:  type modifier is not allowed for type "text"
LINE 1: ...ary key, "name" character varying(255), "content" text(255),...
                                                             ^

这是我最近的迁移:

change_table :mixes do |t|
  t.change :content, :text
  t.change :post, :text  
end 

还有我的 schema.rb:

create_table "mixes", :force => true do |t|
  t.string   "name"
  t.text     "content",    :limit => 255
  t.datetime "created_at"
  t.datetime "updated_at"
  t.string   "mixologist"
  t.string   "link"
  t.string   "title"
  t.text     "post",       :limit => 255
end

据我了解,Sqlite3 不会对字符串和文本实施限制,我自己也没有添加这些限制。我认为 Heroku 会自动处理那些转换为 Postgres 或它所做的任何事情。但似乎限制在某个地方把它扔掉了。处理这个问题的最佳方法是什么?

如果我应该发布其他内容,请告诉我。

【问题讨论】:

    标签: ruby-on-rails sqlite heroku


    【解决方案1】:

    将您最近的迁移更改为

    change_table :mixes do |t|   
        t.change :content, :text, :limit => nil
        t.change :post, :text, :limit => nil
    end
    

    这是使用 sqlite3 进行开发时必须注意的众多细微差别之一 :( 仅当您将列的类型从字符串更改为文本时才会发生。

    【讨论】:

    • 非常感谢德克斯特,一切顺利。我可能应该尝试过...
    • PostgreSQL 的相同问题和解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2016-04-27
    • 2015-01-01
    • 2020-11-08
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多