усеченный текст с использованием вставки Perl DBI - PullRequest
0 голосов
/ 01 июля 2011

Проблема в том, что DBI insert оставляет усеченную длинную строку при вставке в сервер MS SQL. Вот мои коды:

my $insert = $dbh->prepare("INSERT INTO my_table (field_1, field_2) values (?, ?)");
$insert->execute($value_1, $value_2);

, где field_2 имеет тип данных varchar(100), а $value_2 - текстовая строка из 90 символов с пробелами, но без других специальных символов.

После выполнения оператора без возникновения ошибки я проверил базу данных и, по-видимому, фактический вставленный $value_2 усекается до символа 80th , который находится в середине обычного английского слова ( т.е. не специальный символ).

Я пытался изменить тип данных field_2 на varchar(150) и text. Я также использовал $dbh->quote($value_2) вместо $value_2. Но они не помогли.

Почему это происходит? Что я должен делать? Thx !!

Ответы [ 2 ]

1 голос
/ 01 июля 2011
0 голосов
/ 01 июля 2011

Я бы сказал, попробуйте различные строки, чтобы увидеть, все ли они ведут себя одинаково. Вероятно, это проблема кодирования, как предполагает Даворг. Как я помню, в MySQL по умолчанию используется шведский или Latin1, поэтому в MySQL вы, вероятно, захотите изменить параметры сортировки на utf8_general_ci.

...