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/で機能する方法を試すことができます

Source: https://habr.com/ru/post/J268273/


All Articles