Rails 3 Migration with longtext


91

ฉันต้องการเปลี่ยนประเภทคอลัมน์จากข้อความเป็นข้อความยาวในสคริปต์ Rails ของฉัน แต่ไม่พบสิ่งใดในการดำเนินการนี้

มีใครวิ่งข้ามสิ่งนี้บ้าง?

ขอบคุณ! เดนนิส


1
(สำหรับราง 2 อย่างน้อยคุณสามารถระบุ type: longtext FWIW)
rogerdpack

คำตอบ:


183

textประเภทจับtinytext, text, mediumtextและlongtextสำหรับ MySQL ถ้านั่นคือสิ่งที่คุณกำลังใช้ เพียงระบุขอบเขตบนโดยใช้:limit => ...

ตัวอย่าง:

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

ค่าเริ่มต้นlimitคือ 65535 ตามที่คาดไว้

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

เอกสาร MySQL สามารถพบได้ที่นี่


5
ควรเป็น "4294967295" ไม่ใช่ "4294967296" (เช่น4.gigabytes - 1) มิฉะนั้นMysql2::Error: Display width out of range for column ....จะยกขึ้น
Vikrant Chaudhary

1
ฉันได้แก้ไขคำตอบของฉันเพื่อให้สอดคล้องกับสิ่งนั้น ขอบคุณกลุ่ม Vikrant
Chuck Callebs

4
ใน mysql 5.1.52 ฉันใช้ลิมิต16.megabytes - 1แต่ฉันยังได้รับข้อความยาวไม่ใช่ข้อความกลาง คิดว่าทำไม? ขอบคุณ.
David M.

1
เหมือนกันสำหรับฉันแม้ว่าจะระบุ t.text "bla",: limit => 16777215 ประเภทคอลัมน์ที่ได้คือ "longtext"
Martin T.

2
@ChuckCallebs: ขอลิงค์ไปยัง PR ที่แก้ไขปัญหานี้ได้ไหมและ Rails รุ่นไหนที่ควรจัดส่ง
Damien Wilson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.