2011-07-01 15 views
0

問題はDBIinsertがMS SQLサーバーに挿入するときに長い文字列を切り捨ててしまう問題です。ここに私のコードは次のとおりです。field_2varchar(100)$value_2のデータ型を持つperl DBI insertを使用してテキストを切り捨てました

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

は90個のスペースを含む文字が、いないその他の特殊文字のテキスト文字列です。

エラーは発生しませんと文が実行された後、私は、データベースをチェックし、明らかに実際に挿入$value_2は、定期的な英語の単語(すなわちない特殊文字の真ん中にある第80文字、で切り捨てられ)。

field_2varchar(150)textに変更しようとしました。私は$value_2の代わりに$dbh->quote($value_2)も使用しました。しかし、彼らは助けにはなりませんでした。

どうしてですか?私は何をすべきか?どうも!!

+0

接続でRaiseErrorが設定されていることは間違いありませんか?これはどんなプラットフォームですか?どのDBDを使用していますか? – bohica

+0

毎回同じ文字列が影響を受けているのですか?これは、入力した文字列に関係なく発生します。 – shaneburgess

+1

入力データはどのような文字エンコーディングですか?あなたのデータベースは、どの文字エンコーディングを期待していますか? –

答えて

0

私は、さまざまな文字列を試して、すべて同じように動作するかどうかを確認します。おそらくdavorgが示唆しているようにエンコードの問題です。 MySQLの既定の照合順序はスウェーデン語またはLatin1ですので、MySQLでは照合順序をutf8_general_ciに変更することをお勧めします。

+0

すべての文字列は同じように動作します。それは確かに@bohicaによって識別されるサイレント切り捨ての問題でした。 – Zhang18

関連する問題