2010-11-05 21 views
9

我正在使用heroku,並且這樣做時,我體驗了我第一次進入postgresql。也許我從未在開發過程中碰到過它,但我無法將條目保存到長度超過255個字符的數據庫中。有沒有解決的辦法?目前我只是使用字符串來存儲消息數據。在heroku上的PostgreSQL數據庫中存儲超過255個字符

其次,如果確實有一種方法可以存儲超過255個字符,是否有一種很好的方法可以使用遷移將我的消息字符串轉換爲此格式?我的應用程序目前正在使用中。

謝謝!

回答

22

使用text而不是string對您的遷移類型。


要更改遷移

  1. script/generate migration change_string_to_text
  2. change_column :model, :attribute, :text
  3. rake db:migrate
+0

有什麼方法可以使用遷移來更改現有字符串列的類型嗎? – goddamnyouryan 2010-11-05 02:35:41

+2

是的,看到我更新的答案 – s84 2010-11-05 02:40:47

+0

這是完美的,謝謝。我不知道遷移可能會改變屬性 – goddamnyouryan 2010-11-05 02:48:44

9

只是爲了擴大對@ Codeglot的回答,:text是(基本上)無限長的字符串。 :stringlimit:1234選項將限制字符串到那個長度。在Postgres上,:string, limit:nil實際上與:text同義。雖然有些數據庫以不同的方式存儲VARCHAR,VARCHAR(n)和TEXT類型,但出於性能方面的考慮,Postgres以同樣的方式存儲它們。

所以,如果你想超過255個字符,但不是完全無限,你可以使用:string, limit:1234。或者,您可以使用:text並通過驗證限制長度。

相關問題