2010-11-05 29 views
9

Tôi đang sử dụng heroku, và khi làm như vậy, tôi đang trải qua bước đột phá đầu tiên của tôi vào postgresql. Có lẽ tôi chỉ không bao giờ đi qua nó trong phát triển, nhưng tôi không thể lưu các mục vào cơ sở dữ liệu của tôi dài hơn 255 ký tự. Có cách nào để giái quyết vấn đề này không? Hiện tại tôi chỉ sử dụng các chuỗi để lưu trữ dữ liệu tin nhắn.lưu trữ hơn 255 ký tự trong một DB PostgreSQL trên heroku

Thứ hai, nếu thực sự có cách lưu trữ hơn 255 ký tự, có cách nào tốt để chuyển chuỗi thư của tôi thành biểu mẫu này, sử dụng di chuyển không? Ứng dụng của tôi hiện đang hoạt động và đang được sử dụng.

Cảm ơn!

Trả lời

22

sử dụng text thay vì string trên loại di chuyển của bạn.


Để thay đổi một sự chuyển đổi

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

có cách nào để thay đổi loại cột chuỗi hiện có bằng cách sử dụng di chuyển không? – goddamnyouryan

+2

Vâng, xem câu trả lời tôi cập nhật nó – s84

+0

điều này là hoàn hảo, cảm ơn bạn. tôi không biết di chuyển có thể thay đổi thuộc tính – goddamnyouryan

9

Chỉ cần để mở rộng trên @ câu trả lời Codeglot của, :text là cho (chủ yếu) chuỗi không giới hạn độ dài . :string với tùy chọn limit:1234 sẽ giới hạn chuỗi đó với độ dài đó. Trên Postgres, :string, limit:nil có hiệu quả đồng nghĩa với :text. Mặc dù một số cơ sở dữ liệu lưu trữ các loại VARCHAR, VARCHAR (n) và TEXT theo nhiều cách khác nhau, dẫn đến các cân nhắc về hiệu suất, Postgres lưu trữ tất cả chúng theo cùng một cách.

Vì vậy, nếu bạn muốn vượt quá 255 ký tự nhưng không được hoàn toàn không bị chặn, bạn có thể sử dụng :string, limit:1234. Ngoài ra, bạn có thể sử dụng :text và hạn chế độ dài thông qua xác thực.

Các vấn đề liên quan