【bc5】データの復元について

【環境情報】
・baserCMSのバージョン:5.0.18
・レンタルサーバー名:XAMPP8.2.4
・データベース:SQLite
・使用テーマ:自作テーマ
・PHPスキル(自己評価):E
・インストールディレクトリ D:\xampp\htdocs\bctest2
※サブフォルダにインストール

BaserCMS5.0.17でデータメンテナンスよりバックアップを作成し、BaserCMS5.0.18をインストールし直して、バックアップデータを使用してデータの復元を行ったところ、
環境情報を確認するとBaserCMSのバージョンが5.0.17に変わっていましたが、これは正常動作それとも不具合でしょうか?
(一部のプラグインの表示も5.0.17に変わっていました。)
現在の状態は下記のいずれかだと思いますが・・・

・バックアップデータのバージョンに合わせて本体のバージョンをダウングレードする正常動作
・バックアップデータのバージョンに合わせて、本体がダウングレードしてしまう不具合
・本体のバージョンはインストール直後のままだが、表記だけがバックアップデータのバージョンになってしまう不具合

BaserCMSの更新が来ていたため、更新をしてみると、環境情報では5.0.17でしたが、更新画面では現在のバージョンは5.0.18と表示されました。
ということは、本体のバージョンはインストール直後のままだが、表記だけがバックアップデータのバージョンになってしまう不具合?

なお、実際更新してみると、データベースのバージョンが古いため失敗しましたと表示されました。
古いバージョンのデータベースを新しいバージョンのBaserCMSで復元する際、変換等の操作が必要なのでしょうか?

@ciao-h 少しややこしいのですが、大前提としてバージョンについて次の2つがあります。

  • プログラムのバージョン(ソースコード自体のバージョン)
  • データベースのバージョン(ソースコードが依存するデータベース構成を指す)

例えば、バージョン2というバージョンにおいて、contents テーブルに、新しく、new_field というフィールドが追加され、プログラムがその new_field を利用する前提のソースコードになっている場合、new_field が存在しないバージョン1のデータベースを利用すると不具合が発生します。

BaserCMS5.0.17でデータメンテナンスよりバックアップを作成し、BaserCMS5.0.18をインストールし直して、バックアップデータを使用してデータの復元を行ったところ、
環境情報を確認するとBaserCMSのバージョンが5.0.17に変わっていましたが、これは正常動作それとも不具合でしょうか?

これは正常動作です。5.0.17はデータベースのバージョンを指しています。
また、5.0.17で作成したバックアップは、5.0.17用のデータ構成になっているので、原則、プログラムが5.0.18 のものでは利用できません。

BaserCMSの更新が来ていたため、更新をしてみると、環境情報では5.0.17でしたが、更新画面では現在のバージョンは5.0.18と表示されました。

ややこしいですが、環境情報ではデータベースのバージョン情報が表示され、更新画面では、プログラムのバージョン情報が表示されていることになります。

まずは、5.0.17 と 5.0.18 について、実は、データベース構造の変更は発生していないので、手動でデータベースのバージョンを更新することができます。

phpMyAdminなどで、site_configs テーブルを開き、nameフィールドが version というレコードを探してください。そのレコードの value というフィールドに、5.0.17が記録されているはずですので、そこを手動で、5.0.18 に切り替えてください。

その後、アップデートを試してみてください。

「いいね!」 1

@ryuring さん、ご回答ありがとうございます。
教えていただいた方法で、おそらく修正することができたと思います。

環境情報から確認できるのは、BaserCMS本体のバージョンではなく、データベースのバージョンだったのですね。
バックアップデータについても、同じBaserCMS5系列なので、本体バージョンが少し上がっていてもそのまま使用できると思っていました・・・

「いいね!」 1

今回行ったSQLiteのデータベースの修正方法を記載しておきます。
データベースの修正にはSQLiteのデータベース管理ツール「phpLiteAdmin」(1.9.9 開発版)を使用。
※開発版(1.9.9)がPHP8に対応しているため

手順

  1. 「phpLiteAdmin」をダウンロードし、設定。
  2. 旧バージョン(例 5.0.17)のバックアップファイルを新バージョンのBaserCMS(例 5.0.19)で復元する
  3. Basercms内のdb/sqlite/basercms.dbをコピーする
  4. basercms.dbのコピーを「phpLiteAdmin」のフォルダ内に保存する
  5. ブラウザから「phpLiteAdmin」にアクセスし、basercms.dbを開く。
  6. 下記テーブルのversionの内容を変更する( 5.0.17 → 5.0.19)
    [テーブル] site_configs
    [テーブル] plugins
  7. 変更したbasercms.dbのコピーをdb/sqlite/basercms.dbと差し替える

今回はversionの値の変更だけでよかったけど、5.0.xの末尾が変わっただけでも、データベースを大幅に変更することがあるのであれば、バックアップデータを現在使用しているBasercms5バージョンに合わせて変換するプラグインとかあれば助かるかも・・・
(4系から5系用にデータベースを変換する『DBマイグレーター』のような)

新しいバージョンのBaserCMSに古いバージョンのバックアップデータで復元した場合、バージョン表記がバックアップデータのバージョンに表記される問題、手動でデータベースを修正しなくても、Baserマーケットで購入できるプラグイン「アップデートサポーター」でバックアップデータを直せるようになったそうなので、操作方法を追記しておきます。

  1. 新バージョンのBaserCMSをインストールし、旧バージョンのBaserCMSのバックアップデータを使用して復元する。
  2. Baserマーケットからプラグイン「アップデートサポーター」を入手、インストール、有効化する。
  3. 「システム基本設定」から「デバッグモード」に切り替える。
  4. 「アップデートサポーター」メニューから「マイグレーション実行」を選択。
  5. 画面の『マイグレーション済みとしてマーキング」をクリック。※デバッグモードにしないと警告が表示される。
  6. 管理画面の「アップデートサポーター」メニューから「スクリプト実行」を選択。
  7. 画面の入力欄に現在使用中のbasercmsのバージョン(例 5.1.0)を入力。
  8. 「DBのバージョンを更新」をクリック。
  9. 「ユーティリティ」の「環境情報」からバージョンの表記を確認する。