SSブログ

PostgreSQL 9.4、PHP 5.6への更新後の不具合 [Debian]

Debian 8 において、PostgreSQL、PHP の更新後に不具合が発生するようになってしまった。
詳細は、以下の通りである。

[更新前]
postgresql-9.1 9.1.16-0+deb7u1
php5 5.4.45-0+deb7u4
postgresql-9.1-903.jdbc3.jar

[更新後]
postgresql-9.4 9.4.8-0+deb8u1
php5 5.6.23+dfsg-0+deb8u1
postgresql-9.4.1209.jdbc42.jar

1. 不具合-1


(1) 発生事象


JDBC において、日本語を含むテーブルへの操作でエラーが発生する。

・UTF8 以外の日本語を含む場合に、SQLException が発生する。
・同様の設定でも、PostgreSQL 9.1 ではエラーは発生しない。
・当該データベースの文字コードに関する設定は、下記の通りである。
 (Encoding: SQL_ASCII, Collate: C, Ctype: C)

(補足)
エラーログは、下記の通りである。
(/var/log/postgresql/postgresql-9.4-main.log)

ERROR:  invalid byte sequence for encoding "UTF8": 0xa5


(2) 対処方法


データベースの作成時に、エンコーディングを指定する。

(例) EUC_JP を使用する場合
% createdb -E EUC_JP -T template0 test

2. 不具合-2


(1) 発生事象


PHP において、HTTP ヘッダーでのエンコーディングの設定が効かない。
このため、文字化けするページがある。

・下記の設定が効かない。
 <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">

(補足)
PHP 5.6 での仕様の変更のためである。


(2) 対処方法


PHP の default_charset の設定で対応する。

(a) /etc/php5/apache2/php.ini で設定する。

(例) EUC-JP を使用する場合
default_charset = EUC-JP


(b) ページ毎に変更する場合には、HTTP ヘッダーで設定する。


HTTP ヘッダーに下記のコードを追加する。

(例) Shift_JIS を使用する場合
<?php
  if (PHP_VERSION >= 5.6) {
    ini_set('default_charset', 'Shift_JIS');
  }
?>

3. 備考


PostgreSQL の更新により、ブート時に下記のようなワーニングが出力されなくなった。

postgres (1416): /proc/1416/oom_adj is deprecated, \
please use /proc/1416/oom_score_adj instead.


nice!(10)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 10

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。