Matomoの新バージョンのデータベース更新を手動で適用する方法
サポートされていないデータベース構成またはプロバイダを使用している場合、Matomo の自動アップデートで必要な変更をデータベースに適用できないことがあります。
例えば、Planet Scaleではメインデータベースを直接更新することができないため、エラーコードが表示されて更新に失敗します。
この場合、データベースの変更を手動で適用し、エラーコードを無視するように更新プロセスに指示することで、更新を正常に完了できる可能性があります。
この手順には、コマンドラインの使い方に慣れていることと、データベース・サーバー上でSQLクエリーを実行するためのアクセス権が必要です。
必須のignore_error_codesオプションはMatomoバージョン4.12以降でのみ使用可能です。
1) データベースの変更を適用する
アップデートに必要なデータベース・ステートメントを見るには、./console core:updateコマンドを実行する。
この場合、次のような出力が表示される:
*** Update ***
Database Upgrade Required
Your Matomo database is out-of-date, and must be upgraded before you can continue.
Matomo database will be upgraded from version 4.12.0 to the new version 5.1.0.
*** Note: this is a Dry Run ***
ALTER TABLE `log_visit` DROP INDEX `index_idsite_idvisitor`;
ALTER TABLE `log_visit` ADD INDEX `index_idsite_idvisitor` (`idsite`, `idvisitor`, `visit_last_action_time` DESC);
ALTER TABLE `user` ADD UNIQUE KEY uniq_email (`email`);
*** End of Dry Run ***
A database upgrade is required. Execute update? (y/N)
- アップデートの実行を避けるには「N」を押します。
- *** Note: this is a Dry Run ***と*** End of Dry Run ***行の間のSQL文をクリップボードにコピーする。
- SQL文をデータベース管理ツールに貼り付け、実行する。
ステートメントの実行に失敗した場合は、ステップ2に進んではいけません。
2)
データベースのエラーコードを無視するようにアップデータに指示する。
- 自動アップデートがERROR 1105 (HY000): direct DDL is disabledのようなエラーで失敗した場合は、エラーコード(この場合は1105)をメモしてください。
- config/config.ini.phpを編集し[database]セクションにignore_error_codes[] = 1105を追加します。
無視するエラーコードは1行に1つずつ、複数追加することができます。 - ./console core:updateでアップデートを再実行すると、正常に完了するはずです。
3) エラーコードを無視する設定を削除する
アップデートが完了した後ignore_error_codes[]設定を削除または無効にすることを強く推奨します。
そうしないと、次の Matomo アップデートは最初に完了したように見えますが、データベースの変更は適用されません。
Matomo アップデートのたびに、この手順の3つのステップを繰り返す必要があります。