所以找到2相關的字符串與文本字段問題之後,我發現鏈接字段已經文本:爲什麼PostgreSQL中文本字段的字符數限制爲255?
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.02美元,但我避免使用有點神祕的'create_table'和朋友編寫我的Rails遷移。我只是爲PostgreSQL/MySQL執行適當的語句。我想知道我的模式是什麼樣子(類型,索引,約束等)。 – d11wtq
由於'文本'列沒有限制,'字符'和'字符變化'在PostgreSQL中默認限制爲1,沒有任何限制,所以創建表的代碼必須明確指定限制爲255.因此,PostgreSQL是按預期工作。 – aib
確定它不是名爲「text」的列是一個問題?我會通過其他方式(psql)連接到數據庫以驗證事情是否如您所想。根據我的經驗,遷移往往表現得很好。運行後遷移可能會發生變化? – eevar