хранение более 255 символов в БД PostgreSQL на герою - PullRequest
10 голосов
/ 05 ноября 2010

Я использую heroku, и при этом я испытываю свой первый набег в postgresql. Возможно, я просто никогда не сталкивался с этим в процессе разработки, но я не могу сохранить записи в моей базе данных, которые длиннее 255 символов. Это можно обойти? В настоящее время я просто использую строки для хранения данных сообщений.

Во-вторых, если действительно есть способ сохранить более 255 символов, есть ли хороший способ преобразовать мои строки сообщений в эту форму, используя миграции? Мое приложение в данный момент работает и используется.

Спасибо!

Ответы [ 2 ]

23 голосов
/ 05 ноября 2010

используйте text вместо string в типе миграции.


Чтобы изменить миграцию

  1. script/generate migration change_string_to_text
  2. change_column :model, :attribute, :text
  3. rake db:migrate
9 голосов
/ 05 февраля 2013

Просто чтобы расширить ответ @ Codeglot, :text для (по существу) строк неограниченной длины. :string с параметром limit:1234 ограничит строку этой длиной. На Postgres :string, limit:nil фактически является синонимом :text. Хотя некоторые базы данных хранят типы VARCHAR, VARCHAR (n) и TEXT по-разному, что приводит к соображениям производительности, Postgres сохраняет их все одинаково.

Таким образом, если вы хотите превысить 255 символов, но не быть полностью неограниченным, вы можете использовать :string, limit:1234. Кроме того, вы можете использовать :text и ограничить длину с помощью проверок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...