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関係でバグがあったし
カテゴリ:
OpenPNE
,
PostgreSQL
,
Programing
,
Software
,
サーバ管理
トラックバック
このブログ記事に対するトラックバックURL
http://fakelife.info/mt/system/mt-tb.cgi/97
コメントする