稼働中のシステムの検証機を用意することになった。
システムは数年前に開発されたWebのシステム。
全く同じ環境にすれば良いのだが、都合によりそうも行かず。
Windows2003からWindows7とOSから違う。
Windows7で動くことを条件にすると、APサーバなどメジャーバージョンから変わってしまった。
苦労したのが、PostgreSQL8.2から9.3の移行である。
ダンプからのリストアは問題なかったが、システムを動かすと所々でエラーが発生する。
8.2と9.3で色々と扱いが違うようだ。
システムはパッケージで導入し改修はできない。
以下のサイト参考にして(というか切り貼りして)対応した
-- 演算子||追加 CREATE FUNCTION textint4cat(text, int4) RETURNS text AS 'SELECT $1 || $2::pg_catalog.text' LANGUAGE sql IMMUTABLE STRICT; CREATE OPERATOR || (PROCEDURE = textint4cat, LEFTARG = text, RIGHTARG = int4);
-- CASTの追加 CREATE CAST (int4 AS text) WITH INOUT AS IMPLICIT; CREATE CAST (numeric AS character) WITH INOUT AS IMPLICIT; CREATE CAST (timestamp without time zone AS text) WITH INOUT AS IMPLICIT; CREATE CAST (character varying AS numeric) WITH INOUT AS IMPLICIT; CREATE CAST (timestamp without time zone AS character varying) WITH INOUT AS IMPLICIT; CREATE CAST (character varying AS timestamp without time zone) WITH INOUT AS IMPLICIT; CREATE CAST (timestamp with time zone AS text) WITH INOUT AS IMPLICIT;
さらに postgresql.conf の standard_conforming_strings = off へ
これでどうにか動くようになった。
0 件のコメント:
コメントを投稿