Почему рельсы переворачивают столбец TEXT до 65535 символов? - PullRequest
3 голосов
/ 15 февраля 2010

Я сохраняю необработанное письмо в столбце TEXT в MySQL с помощью Ruby on Rails. Он продолжает усекаться до 65535 символов, кто-нибудь знает, что вызывает это?

MySQL работает с max_allowed_packet=64M

Использование InnoDB для механизма хранения.

Ответы [ 4 ]

13 голосов
/ 15 февраля 2010

Он усекается до этой длины, потому что ... ну, это то, что поместится в столбце TEXT .

Вам нужен MEDIUMTEXT или LONGTEXT, если вы хотите сохранить больше.

2 голосов
/ 15 февраля 2010

Ruby on Rails не усек, MySQL сделал.

Тип TEXT ограничен 2^16 - 1 = 65535 символами, см. Документацию .

1 голос
/ 15 февраля 2010

Я не эксперт по Ruby, но число 65535 привлекло мое внимание - это 16 бит (минус 1, что обычно является особенным). Вы, вероятно, наталкиваетесь на стену ограничения размера используемого вами типа.

1 голос
/ 15 февраля 2010

65535 - это одно из этих «магических чисел» - это 2 ^ 16 - 1. Это максимальный предел для столбца TEXT в MySQL.

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