2010-09-28 87 views
1

我在我的sqlite3數據庫中的一個模型中有一個字符串類型的註釋字段,但我意識到我需要存儲比字符串允許的更多文本。sqlite3數據庫中的字符串/文本存儲限制

我剛剛運行遷移,將字段的類型從字符串更改爲文本。看看我的數據庫,它說現在的類型是text(255),而之前是varchar(255)

255是什麼意思?這是一個字符限制嗎?如果是這樣,我會有像以前一樣的存儲問題嗎?我將如何解決這個問題?

這裏是我用來改變字段類型

change_column(:posts, :note, :text) 

回答

6

SQLite不執行文本存儲限制。如果你聲明瞭VARCHAR(1)或TEXT(1)列,你仍然可以在其中存儲一些非常長的500兆字節。儘管這不是可建議的。

~$ sqlite 
SQLite version 3.7.2 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> create table foo (bar text(3)); 
sqlite> insert into foo values ('aeiou'); 
sqlite> select * from foo; 
aeiou 
1

遷移你應該只讓你的存儲類型text並沒有投入任何限制就可以了。 255表示該字段中允許的最大字符數。

+0

感謝您的回答。我該怎麼做呢?我運行的遷移類型是change_column(:posts,:note,:text),所以我沒有自己指定255。 – ben 2010-09-28 02:02:20

+0

@ben - 我不確定,也許嘗試'change_table'調用,並執行':limit => nil'。看看http://guides.rubyonrails.org/migrations.html#changing-tables – 2010-09-28 02:04:37

相關問題