2012-03-20 14 views
28

Así que tienen una mesa comments que se estructura como esta:PostgreSQL cuerda (255) Fecha límite - Rails, Ruby y Heroku

# == Schema Information 
# 
# Table name: comments 
# 
# id   :integer   not null, primary key 
# body  :string(255) 
# notified :boolean 
# user_id :integer 
# stage_id :integer 
# created_at :datetime 
# updated_at :datetime 
# client_id :integer 
# author  :string(255) 

Este es el mensaje de error que estoy recibiendo:

ActiveRecord::StatementInvalid (PGError: ERROR: value too long for type character varying(255) 

¿Cómo almaceno el texto largo en una columna PG usando Rails 3.xy Heroku?

¿Cómo sería la migración para solucionar este problema?

Gracias.

+1

¿Está buscando algo más que: http://stackoverflow.com/questions/4103141/storing-more-than-255-characters-in-a-postgresql-db-on-heroku? –

+0

No ... eso es exactamente lo que estaba buscando. ¡Gracias! – marcamillion

Respuesta

59

Tendría que usar texto en lugar de cadena.

migración sería algo a lo largo de las líneas de:

change_column :comments, :body, :text, :limit => nil 
+6

Un cambio en eso sería: asegúrese de especificar ': limit => nil'; de lo contrario, se agregará un' limit' de 255 al esquema en Rails 3.x. – marcamillion

+4

El 'limit: nil' ya no es necesario. Utilizando los carriles 3.2.11, al establecer tipo en: texto se establece el tipo de columna Postgres en 'texto'. No hay un límite implícito: 255. –

+0

Rails 3.2.8,: limit => nil es necesario. –

0

Todo el tiempo que resolver este problema mediante este tipo de consulta
ALTER TABLE your_table_name ALTER COLUMN your_column_name TYPE text;


carácter variable ha limitado la longitud y no puede pasar esta longitud
texto es una variable que no tiene límite.
Para que pueda convertir su tipo de columna de carácter variable (que tiene una longitud) a
texto (que no tiene límite).

Cuestiones relacionadas