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

ben*_*ben 1 sqlite ruby-on-rails

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

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

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

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

change_column(:posts, :note, :text)
Run Code Online (Sandbox Code Playgroud)

Ben*_*oit 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
Run Code Online (Sandbox Code Playgroud)