OpenPNE PostgreSQL版 2.10→2.12 アップグレードSQLのバグ

あいかわらず肩身の狭いPostgreSQL版です(笑
アップグレードSQLも書かれているだけで、一度も実行されてすらいないんじゃないかと

つーことで、3箇所ほど修正することでいけるので、書いておく

まず238~243行目

INSERT INTO c_diary_comment_log (c_diary_comment_log_id, c_member_id, c_diary_id, r_datetime)
(SELECT NULL, c_member_id, c_diary_id, MAX(r_datetime) AS r_datetime
FROM c_diary_comment
GROUP BY c_member_id, c_diary_id
ORDER BY r_datetime);

この部分を以下のように書き換える

INSERT INTO c_diary_comment_log (c_member_id, c_diary_id, r_datetime)
(SELECT c_member_id, c_diary_id, MAX(r_datetime) AS r_datetime
FROM c_diary_comment
GROUP BY c_member_id, c_diary_id
ORDER BY r_datetime);

c_diary_comment_log_id は NOT NULL な SERIAL 型なのに、明示的に NULL をぶっ込もうとしているので、自動的に連番が振られることもなく、 NULL いれようとしてんじゃねーよということで ERROR になる

 

 

次は244~250行目

INSERT INTO c_diary_comment_log (c_diary_comment_log_id, c_member_id, c_diary_id, r_datetime)
(SELECT NULL, tmp_c_diary_comment_log.c_member_id, tmp_c_diary_comment_log.c_diary_id,
tmp_c_diary_comment_log.r_datetime as r_datetime
FROM tmp_c_diary_comment_log
INNER JOIN c_diary USING (c_diary_id)
WHERE tmp_c_diary_comment_log.c_member_id <> c_diary.c_member_id
ORDER BY r_datetime);

これを以下のように修正

INSERT INTO c_diary_comment_log (c_member_id, c_diary_id, r_datetime)
(SELECT tmp_c_diary_comment_log.c_member_id, tmp_c_diary_comment_log.c_diary_id,
tmp_c_diary_comment_log.r_datetime as r_datetime
FROM tmp_c_diary_comment_log
INNER JOIN c_diary USING (c_diary_id)
WHERE tmp_c_diary_comment_log.c_member_id <> c_diary.c_member_id
ORDER BY r_datetime);

まぁERRORの理由と修正内容は一つ前のと同じ

 

 

255~264行目の以下のSQL

CREATE TABLE c_cmd_caster (
c_cmd_caster_id serial NOT NULL,
url varchar(128) NOT NULL default '',
title text NOT NULL,
description text NOT NULL,
sort_order int4 NOT NULL default '0',
is_enabled smallint NOT NULL default '0',
PRIMARY KEY (c_cmd_caster_id),
UNIQUE url (url)
);

これは最後の部分(264行目)を以下のように修正すればいい

UNIQUE (url) 

これは単純にSQLの構文ミス
MySQLは大丈夫っぽいけど

 

 

最後が267~268行目

DROP INDEX name;
DROP INDEX name_2;

オレのところだとこの2つのINDEXは存在していなかった
オレだけかもしれないけど、この部分でINDEXないよってERRORでても支障はないので、放置でもOK

 

 

開発チームには皆無で、外部で手伝っている人がいるっぽく、ユーザーはごく少数なPostgreSQL版はアップグレード時はそれなりの覚悟をして使わないといかんですね。
2.10から公式サポートになったけど、2.10のときもかなりPostgreSQL版はSQL関係でバグがあったし

カテゴリ: , , , ,

関連する記事

この記事に関連する記事は、0 件です。

トラックバック

このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/97

コメントする


画像の中に見える文字を入力してください。