sqlite3数据库中的字符串/文本存储限制

时间:2010-09-28 01:56:47

标签: ruby-on-rails sqlite

我的sqlite3数据库中的一个模型中有一个字符串类型的注释字段,但我意识到我需要存储比字符串允许的更多文本。

我刚刚运行了一个迁移,将字段类型从字符串更改为文本。查看我的数据库,它表示类型现在是text(255),而在varchar(255)之前。

255是什么意思?这是一个角色限制吗?如果是这样,我会遇到与以前相同的存储问题吗?我该如何解决这个问题?

以下是我用来更改字段类型的迁移

change_column(:posts, :note, :text)

2 个答案:

答案 0 :(得分:6)

SQLite不强制执行文本存储限制。如果声明列VARCHAR(1)或TEXT(1),您仍然可以在其中存储一些500 MB的非常长的blob。即使这不值得建议。

~$ 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 :(得分:1)

您应该只设置存储类型text,而不对其进行任何限制。 255表示字段中允许的最大字符数。