Ограничения хранения строк / текста в базе данных sqlite3 - PullRequest
1 голос
/ 28 сентября 2010

У меня есть поле примечания строкового типа в одной из моих моделей в моей базе данных sqlite3, но я понял, что мне нужно хранить больше текста, чем позволяет строка.

Я только что запустил миграцию, изменив тип поля со строки на текст. Глядя на мою базу данных, он говорит, что тип теперь text(255), тогда как раньше он был varchar(255).

Что означает 255? Это ограничение персонажа? Если да, будут ли у меня те же проблемы с хранением, что и раньше? Как бы я это исправить?

Вот миграция, которую я использовал для изменения типа поля

change_column(:posts, :note, :text)

Ответы [ 2 ]

6 голосов
/ 28 сентября 2010

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 голос
/ 28 сентября 2010

Вы должны просто указать тип хранилища text и не ограничивать его. 255 обозначает максимально допустимое количество символов в поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...