Rel 3 Migrasi dengan teks panjang

91

Saya perlu mengubah tipe kolom dari teks menjadi teks panjang dalam skrip Rails saya, tetapi tidak dapat menemukan apa pun tentang cara melakukan ini.

Apakah ada yang menemukan ini?

Terima kasih! Dennis

dennismonsewicz
sumber
1
(untuk rel 2 setidaknya, Anda dapat menentukan jenis: longtext FWIW)
rogerdpack

Jawaban:

183

The textjenis pegangan tinytext, text, mediumtext, dan longtextuntuk MySQL, kalau itu apa yang Anda gunakan. Cukup tentukan batas atas menggunakan:limit => ...

Contoh:

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

Nilai defaultnya limitadalah 65535, seperti yang diharapkan.

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

Dokumentasi MySQL dapat ditemukan di sini .

Chuck Callebs
sumber
5
Ini harus "4294967295" dan bukan "4294967296" (yaitu, 4.gigabytes - 1) atau Mysql2::Error: Display width out of range for column ....dinaikkan.
Vikrant Chaudhary
1
Saya telah mengubah jawaban saya untuk mencerminkan itu. Terima kasih banyak Vikrant.
Chuck Callebs
4
Pada mysql 5.1.52 saya menggunakan batas 16.megabytes - 1, tetapi saya masih mendapatkan teks panjang, bukan teks menengah. Tahu kenapa? Terima kasih.
David M.
1
Sama untuk saya, meskipun menentukan t.text "bla",: limit => 16777215, jenis kolom yang dihasilkan adalah "longtext".
Martin T.
2
@ ChuckCallebs: Bisakah kita mendapatkan tautan ke PR yang memperbaiki masalah ini dan versi Rails apa yang seharusnya dikirimkan?
Damien Wilson