2010-11-05 15 views
9

Estoy usando heroku, y al hacerlo, estoy experimentando mi primera incursión en postgresql. Tal vez nunca lo encontré en desarrollo, pero no puedo guardar entradas en mi base de datos que tengan más de 255 caracteres. ¿Hay alguna forma de evitar esto? Actualmente, solo estoy usando cadenas para almacenar datos de mensajes.almacenando más de 255 caracteres en una base de datos PostgreSQL en heroku

En segundo lugar, si hay una forma de almacenar más de 255 caracteres, ¿hay alguna manera de convertir mis cadenas de mensajes en esta forma, usando migraciones? Mi aplicación está actualmente en vivo y en uso.

Gracias!

Respuesta

22

use text en lugar de string en su tipo de migración.


Para cambiar una migración

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

¿hay alguna forma de cambiar el tipo de columnas de cadenas existentes mediante migraciones? – goddamnyouryan

+2

Sí, mira la respuesta que actualicé – s84

+0

esto es perfecto, gracias. no sabía que las migraciones podían alterar los atributos – goddamnyouryan

9

Sólo para ampliar @ respuesta de Codeglot, :text es para (esencialmente) cadenas de longitud ilimitada . :string con una opción limit:1234 limitará la cadena a esa longitud. En Postgres, un :string, limit:nil es sinónimo de :text. Aunque algunas bases de datos almacenan los tipos VARCHAR, VARCHAR (n) y TEXT de diferentes maneras, lo que conduce a consideraciones de rendimiento, Postgres las almacena todas de la misma manera.

Así que si quiere superar 255 caracteres pero no ser completamente ilimitado, puede usar :string, limit:1234. Alternativamente, puede usar :text y restringir la longitud mediante validaciones.

Cuestiones relacionadas