技術情報

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つのステップを繰り返す必要があります。