質問: サードパーティの拡張機能によって行われたデータベースの変更を検出する方法はありますか? 私は開発/ステージング/本番環境で働いており、特にjoomlaや他のサードパーティソフトウェアへのアップグレードが必要な場合に、ある環境から別の環境にコードをプロモートするいくつかの課題に直面しています。特定の日付以降にデータベースに対して実行されたsqlステートメントを確認して、各環境をアップグレードすることなく、異なる環境に適用できるようにする方法はありますか?
回答: 単純な答えはノーです。mysqlはクエリをログに記録できますが、制限があります。環境間に1つでも違いがあると、クエリが機能しなくなります。それでも、それを行う唯一の方法はサーバー自体です。私が知る限り、jdatabaseに特別なログが追加されていないためです(コンポーネントがjdatabaseを使用しない場合、コントロールはさらに低下します)。上記のように、完璧な世界で見ることができる方法がありますが、開発からライブに移行すると、現在独自にクエリを実行していたライブサイトがあり、現在の開発/ステージングとは「異なる」バージョン。したがって、ユーザーがライブサイトにサインアップし、開発者がjoomlaをアップグレードした場合、ユーザーテーブルを更新すると、そのユーザーを手動で再追加する必要が生じます(テーブル構造も変更される可能性があります)。ここで、1人のユーザーではなく、10人、さらには100人のユーザーを想像してください。プロセスは自動化できません。joomlaにはいくつかのニース更新機能があり、テーブルのバージョンmysql更新のバージョンを許可します。これにより、テーブルはクエリに必要な構造を維持しますが、テーブルの挿入や更新は追跡されないため、開発環境で更新した場合、本番環境で更新する最良の方法は、同じ手順に従って、本番環境でも更新することです。将来的には、joomlaがコアでデータベースの変更を追跡し、本番バージョンを開発バージョンに同期できるようになる可能性がありますが、そのようなものを構築するための作業量は非常に多く、パフォーマンスに影響を及ぼします。現在、私はそれがあるとは考えていません。