Rails 3 Migration with longtext


90

Tôi đang cần thay đổi loại cột từ văn bản thành văn bản dài trong tập lệnh Rails của mình, nhưng không thể tìm thấy bất kỳ điều gì về cách thực hiện việc này.

Có ai chạy qua điều này?

Cảm ơn! Dennis


1
(đối với đường ray 2 ít nhất, bạn chỉ có thể chỉ định loại: longtext FWIW)
rogerdpack

Câu trả lời:


182

Các texttay cầm loại tinytext, text, mediumtext, và longtextcho MySQL, nếu đó là những gì bạn đang sử dụng. Chỉ cần chỉ định giới hạn trên bằng cách sử dụng:limit => ...

Thí dụ:

change_column :articles, :body, :text, :limit => 4294967295

Giá trị mặc định của limitlà 65535, như mong đợi.

1 to 255 bytes: TINYTEXT
256 to 65535 bytes: TEXT
65536 to 16777215 bytes: MEDIUMTEXT
16777216 to 4294967295 bytes: LONGTEXT

Tài liệu MySQL có thể được tìm thấy tại đây .


5
Nó phải là "4294967295" chứ không phải "4294967296" (tức là 4.gigabytes - 1), nếu không Mysql2::Error: Display width out of range for column ....sẽ được nâng lên.
Vikrant Chaudhary

1
Tôi đã sửa đổi câu trả lời của mình để phản ánh điều đó. Cảm ơn rất nhiều Vikrant.
Chuck Callebs

4
Trên mysql 5.1.52, tôi đã sử dụng giới hạn 16.megabytes - 1, nhưng tôi vẫn nhận được văn bản dài, không phải văn bản trung bình. Bất kỳ ý tưởng tại sao? Cảm ơn.
David M.

1
Tương tự với tôi, mặc dù chỉ định t.text "bla",: limit => 16777215, loại cột kết quả là "longtext".
Martin T.

2
@ChuckCallebs: Chúng tôi có thể nhận được một liên kết đến PR đã khắc phục sự cố này và phiên bản Rails mà nó phải được chuyển đến không?
Damien Wilson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.