2012-03-20 9 views
28

Więc mam comments stół, który jest zorganizowany tak:PostgreSQL strunowe (255) graniczne - Rails, Ruby i 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) 

To jest komunikat o błędzie otrzymuję:

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

Jak przechowywać długi tekst w kolumnie PG za pomocą Rails 3.x i Heroku?

Jak wyglądałaby migracja, aby rozwiązać ten problem?

Dzięki.

+1

Szukasz czegoś więcej niż: http://stackoverflow.com/questions/4103141/storing-more-than-255-characters-in-a-postgresql-db-on-heroku? –

+0

Nie ... właśnie tego szukałem. Dzięki! – marcamillion

Odpowiedz

59

Musisz użyć tekstu zamiast łańcucha.

migracji byłoby coś wzdłuż linii:

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

Jedną z rzeczy, które chciałbym zmienić, jest dopisanie ': limit => zero', w przeciwnym razie' 'limit' 255 zostanie dodany do schematu w Railsach 3.x. – marcamillion

+4

"Limit: zero" nie jest już potrzebny. Korzystanie z szyn 3.2.11, ustawienie typu: tekst ustawia typ kolumny Postgres na "tekst". Nie ma ukrytego ograniczenia: 255. –

+0

Szyny 3.2.8,: limit => zero jest potrzebne. –

0

cały czas mogę rozwiązać ten problem przez ten typ zapytania
ALTER TABLE your_table_name ALTER COLUMN your_column_name TYPE text;


Charakter różnym ma ograniczoną długość i ty nie mogę przejść tej długości.
tekst jest zmienną, która nie ma limitu.
Możesz więc przekształcić typ kolumny ze zmiennej o różnej długości (która ma długość) na tekst o numerze
(bez limitu).

Powiązane problemy