我的sqlite3数据库中的一个模型中有一个字符串类型的注释字段,但我意识到我需要存储比字符串允许的更多文本。
我刚刚运行了一个迁移,将字段类型从字符串更改为文本。查看我的数据库,它表示类型现在是text(255)
,而在varchar(255)
之前。
255是什么意思?这是一个角色限制吗?如果是这样,我会遇到与以前相同的存储问题吗?我该如何解决这个问题?
以下是我用来更改字段类型的迁移
change_column(:posts, :note, :text)
答案 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表示字段中允许的最大字符数。