OpenPNE 3.1.2 から OpenPNE 3.1.3 へのアップデートが正しくおこなえない件について
10 / 07 水曜日 2009
開発チームの海老原です。
先日リリースした OpenPNE 3.1.3 へのアップデートが、不具合および手順の漏れにより正しく完了できないことがある場合について、詳細と対応方法についてご連絡します。
問題
OpenPNE 3.1.2 から OpenPNE 3.1.3 にアップデートする場合、「You must pass a valid path to a directory containing Doctrine models」というエラーメッセージが出力されてアップデートが中断してしまう。
原因の概要
- ・アップデート手順の漏れ
- ・OpenPNE 3.1.3 でおこなったバグ修正の考慮不足
原因の詳細
OpenPNE 3.1.3 には、 opOpenSocialPlugin 0.9.0 の追加が含まれています。 OpenPNE のバージョンアップをおこない opOpenSocialPlugin をインストールする際、自身の管理しているテーブルにデータロードをおこないますが、 OpenPNE 3.1.2 までのバージョンではこれが正常に動かず、アップデートが続行できないことが判明したため、新しくインストールされたプラグインのテーブルを作成するように OpenPNE 3.1.3 に向けて修正をおこないました。
しかし、この修正は「OpenPNE 3.1.2 時点のプラグインディレクトリを OpenPNE 3.1.3 にコピーしたのちに、 openpne:migrate を実行する」ということのみを想定しておこなわれたものでした。そのせいで、今回新しくインストールされる以外のプラグインに関する考慮がされておらず、自分自身でテーブルを持たない opAuthMailAddressPlugin のインストールが openpne:migrate 時におこなわれるとエラーが出てしまっていました。
以前から紹介していた手順では、 openpne:migrate の前にプラグインのコピーをおこなっていないため、プラグインをすべて新しくインストールし直していました。そのため、バグ修正時に想定していた状態とは異なってしまい、アップデートが続行できないという事態になっていました。
本件についての対処
- 1. アップデート手順書で示している手順に、プラグインディレクトリのバックアップおよびコピーについて追記しました。
この手順は、 OpenPNE 3.1.3 以降のみならず、すべての OpenPNE 3.1.x のバージョンアップにおいて本来必要なものでした。 - 2. テーブルを定義しないプラグインでも openpne:migrate が正しくおこなえるように、ソースコードの修正をおこないます。
2. については、この対応をおこなったバージョンを 3.1.3.1 もしくは 3.1.4 として早急にリリースすることを考えています。
問題が発生した場合の対応方法
1. データベースのバックアップ、元ファイルのバックアップの両方を取っている場合
アップデート手順に従って、アップデートをやり直してください。
2. データベースのバックアップのみを取っているか、バックアップを取っていない場合
以下の SQL を実行してください。
UPDATE sns_config SET value = "0" WHERE name LIKE "%Plugin_needs_data_load";
今回インストールされる二つのプラグインをアンインストールしてください。
$ ./symfony opPlugin:uninstall opOpenSocialPlugin $ ./symfony opPlugin:uninstall opReviewPlugin
もう一度 openpne:migrate タスクを実行してください。
$ ./symfony openpne:migrate