在找到与字符串与文本字段相关的2个SO问题后,我发现链接字段 已经 文字:
create_table "answers", :force => true do |t|
t.string "text"
t.text "link"
为什么Postgres会抛出以下错误:
ActiveRecord::StatementInvalid: PG::Error: ERROR: value too long for type character varying(255)
我尝试了迁移change_column :answers, :link, :text, :limit => nil
,但我认为没有做任何事情。
编辑:所以,问题是架构说该字段是文本,但实际上它是字符串:
Answer.new.column_for_attribute('link').type
=> :string
解决这个问题的最佳方法是什么?通过从架构重建数据库?通过将其更改为字符串然后再返回文本?
Rails 3.2.2,Postgres 9,Heroku。
答案 0 :(得分:1)
不太确定它是如何发生的,但是下列之一:
答案 1 :(得分:0)
使用发送到Postgres的原始SQL语句编写迁移。只需使用psql控制台中直接运行的任何内容调用execute
即可。这是确切知道数据库将处于何种状态的最佳方式。通常,这比让Rails为您定义架构更好。您应该定期查看您的架构,尤其是在运行迁移之后。