A varchar(200)
должно быть в состоянии хранить 200 символов. Вам не нужно увеличивать размер, но если вы это сделаете, произвольное увеличение на 10% не гарантирует решения проблемы, если вы не знаете, что ее вызывает. Опасность переполнения сохранится.
Некоторые возможные причины, которые приходят на ум:
- Как отмечает @VigneshKumarA, это может быть возврат каретки, сохраняемый в виде двух символов.
- Это также могут быть многобайтовые символы Юникода - то есть что-либо, кроме базового набора символов ASCII. Если вы вводите буквы или символы с акцентом или нелатинские шрифты, они будут занимать более одного байта на символ.
- Экранированные / закодированные символы, если вы дезинфицируете свои данные. Например, если вы используете
htmlentities()
или что-то подобное во входной строке, вы можете получать отдельные символы из входных данных, которые преобразуются в коды сущностей, такие как &
. Это, очевидно, сделает строку длиннее, чем она была при вводе.
Я бы порекомендовал вам использовать инструмент базы данных для проверки сохраненных данных и выяснить, почему он хранит больше символов, чем вы. ожидается. Поймите, чем вызвано несоответствие, а затем либо исправьте его, либо адаптируйте вашу систему для его устранения, чтобы быть уверенным, что оно никогда не переполнится.