2010-11-05 75 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并通过验证限制长度。

相关问题