Varcar (200) в mySql не соответствует атрибуту maxLength = 200 html textarea - PullRequest
0 голосов
/ 07 ноября 2019

Я использую базу данных MySql и для поля я выбрал varchar (200). Для предотвращения проблем я установил на своей html-странице maxlength 200. Так что в идеале не должно быть проблем. Но если я позволю пользователю ввести 200 символов, я получу исключение. Так что я попробовал и попробовал и только в 190 символов, я могу быть уверен, что это также соответствует базе данных. Поэтому в будущем я буду предотвращать проблемы, чтобы размер varchar () всегда был на 20% больше, чем тот, который пользователь может ввести на html-странице.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

A varchar(200) должно быть в состоянии хранить 200 символов. Вам не нужно увеличивать размер, но если вы это сделаете, произвольное увеличение на 10% не гарантирует решения проблемы, если вы не знаете, что ее вызывает. Опасность переполнения сохранится.

Некоторые возможные причины, которые приходят на ум:

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

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

1 голос
/ 07 ноября 2019

Может быть carriage returns считается 2 символа каждый, когда речь идет о максимальной длине. Можете ли вы убедиться, что у вас есть возврат каретки.

1\r\n
1\r\n
1\r\n
1

enter image description here

...