4

Postgres 9.1.2 から Postgres 9.4beta1 にアップグレードした後、OTRS 3.3.5 は http-error.log で見つかった Perl エラーで動作を停止し、チケットを閉じるときに発生しました。エラーは次のとおりです。

[...]/Kernel/System.DB.pm 499 行目のサブルーチン エントリのワイド文字

499 行目は次のとおりです。

if ( !$Self->{dbh}->do( $Param{SQL}, undef, @Array ) ) {

クエリの実行中に Perl スクリプトが失敗したようです。

私の Perl のバージョンは v5.16.3 です。

私はたくさん検索しましたが、これまでのところ解決策はありませんでした。

4

1 に答える 1

1

これはエラーではなく警告です。perldiagを見ると説明が得られます。

%s のワイド文字

(S utf8) Perl はワイド文字 (>255) を想定していないときに遭遇しました。この警告は、I/O (印刷など) に対してデフォルトでオンになっています。この警告を抑える最も簡単な方法は、単純に :utf8 レイヤーを出力に追加することです (例: binmode STDOUT, ':utf8' )。警告をオフにする別の方法は、警告を追加しない 'utf8' です。しかし、それは多くの場合、不正行為に近いものです。一般に、ファイルハンドルにエンコーディングを明示的にマークすることになっています。 open と binmode を参照してください。

Perl がバイトを期待している場所に utf8 でエンコードされた文字があります。encode()この時点に到達する前に、おそらくデータを取得する必要があります。

于 2014-12-16T11:57:15.053 に答える