Compalex:2つのデータベースのスキーマの比較

prodおよびtestデータベースがあるとします。 ある時点で、開発者はテストベースに変更を加えましたが、戦闘ベースにこれらの変更を加えるのを忘れていました。 これが頻繁に使用されるテーブルである場合、SQLクエリのエラーがログに表示され、ボスが「what @#$%」という非難であなたを呼び出し始めるため、状況はすぐに明らかになります。



しかし、変更がめったに使用されないテーブルに影響する場合や、一見しただけではその変更が明らかでない場合があります(たとえば、誰かがVARCHARフィールドの長さを変更して行がカットされ始めた、または誰かがインデックスを追加したため、テストベースのクエリが実行されるため)より速く注文します)。



もう1つのオプションは、ソフトウェアを更新し、すべてが機能しなくなったことです。 ゼロからの不可解なエラーの束、アプリケーションは嘘をついており、ユーザーは満足していません。



このような場合、ベースがどのように異なるかを確認し、適切な結論を導き出すことが非常に役立ちます。







何が思い浮かびますか? 1つのベースの構造をダンプしてから、別のベースの構造をダンプします。 diffユーティリティを実行すると、2つのダンプが異なる行が表示されます。 小さな変更の場合、これは機能する可能性があります。 しかし、第一に、これはやや骨の折れる作業であり、第二に、あるデータベースにテーブルがなく、diffが異なるテーブルの比較を開始するスクリーンショットのような状況になることがあります。







これらの問題に直面して、MySQL、MS SQL Server、PostgreSQL(Oracleサポートの計画)で動作し、2つのデータベースを比較できる小さなphpスクリプト( https://github.com/dlevsha/compalex )を書きました。 このスクリプトは依存関係を描画しないため、インストールとサポートが簡素化されます。



動作させるには、スクリプト自体をインストールする必要があります(PDOサポート付きのphp> = 5.4が既にインストールされていると仮定します。インストールされていない場合、debian / ubuntuでaptitude install php5を 1行で実行します。



$ git clone https://github.com/dlevsha/compalex.git $ cd compalex
      
      







プロジェクトフォルダーで.environmentを開き、パラメーターを編集します。



 [ Main settings ] ; Possible DATABASE_DRIVER: 'mysql', 'pgsql', 'dblib'. ; Please use 'dblib' for Microsoft SQL Server DATABASE_DRIVER = mysql DATABASE_ENCODING = utf8 SAMPLE_DATA_LENGTH = 100 [ Primary connection params ] DATABASE_HOST = localhost DATABASE_NAME = compalex_dev DATABASE_USER = login DATABASE_PASSWORD = password DATABASE_DESCRIPTION = Developer database [ Secondary connection params ] DATABASE_HOST_SECONDARY = localhost DATABASE_NAME_SECONDARY = compalex_prod DATABASE_USER_SECONDARY = login DATABASE_PASSWORD_SECONDARY = password DATABASE_DESCRIPTION_SECONDARY = Production database
      
      







サポートされている「mysql」、「pgsql」、「dblib」からDATABASE_DRIVERドライバーを選択します



それぞれ、1番目と2番目のデータベースへの接続を担当する設定を修正します



 DATABASE_HOST = localhost DATABASE_NAME = compalex_dev DATABASE_USER = root DATABASE_PASSWORD = password
      
      







どのデータベースがどこにあるか混乱しないように-DATABASE_DESCRIPTIONパラメーターに名前を付けます



その後、プロジェクトフォルダに移動して、Webサーバーを起動します



 $ php -S localhost:8000
      
      







ブラウザで開くhttp:// localhost:8000 /



指定されたデータベースパラメータに従って、2つの列で構成される比較図を表示する必要があります。







要素の目的は図に示されています。



データベースへの直接ローカル接続を整理できない場合があり、コンソールからサーバー上の変更を直接確認する必要があります。



これらの目的のために、HTMLフォーマットとマークアップカラーをサポートするeLinksコンソールブラウザーの使用をお勧めします。



サーバーにスクリプトをインストールし、Webサーバーを起動して(上記を参照)、実行する必要があります。



 $ elinks http://localhost:8000
      
      







次のことを取得します。







Webサイトの詳細(英語) http://compalex.net/



ここでは、すべてがhttp://demo.compalex.net/で機能する方法を試すことができます



All Articles