2012-09-24 29 views
3

這裏是我的架構:是否有在活動記錄(MySQL數據庫)文本字段中的字符數有限制

create_table "delayed_jobs", :force => true do |t| 
    t.integer "priority", :default => 0 
    t.integer "attempts", :default => 0 
    t.text  "handler" 
    t.text  "last_error" 
    t.datetime "run_at" 
    t.datetime "locked_at" 
    t.datetime "failed_at" 
    t.string "locked_by" 
    t.string "queue" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

我使用延遲就業的電子郵件。我的一封電子郵件有一個非常長的處理程序(50000+)字符,並且在將它保存在處理程序文本字段中時發生這種情況。文本字段通常可以使用多少個字符?我應該如何增加它?

回答

5

MySQL支持4種TEXT字段類型

(TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT)

對於每種類型的限制是

> TINYTEXT 256 bytes  TEXT 65,535 bytes  MEDIUMTEXT 16,777,215 bytes 
> LONGTEXT 4,294,967,295 bytes 

可以相應地改變。 注意:字節大小是字符數

1

據我所知,Ruby本身對字符串的長度沒有任何限制,因此您存儲在Rails中的字符串受限於數據庫功能。

2

我在我的消息模型中有類似的問題。最初創建模型時,郵件正文中被定義爲字符串

create_table :messages do |t| 
    t.string :body, 
...... 
end 

這截斷我的郵件正文爲256個字符。所以我改變了列與另一個遷移:

def up 
    change_table :messages do |t| 
    t.change :body, :text 
    end 
end 

由於mhasan在他的回答中概述,:文字是65535個字節長。如果您需要更長時間,則可以使用:mediumtext或:longtext代替

相關問題