開発およびデバッグのプロセスでは、新しいコードと古いコードの違いを比較する必要があります。比較には、git/svn などのバージョン管理ツールを使用できます。また、異なるバージョンのデータベース テーブル構造にも違いがあります。その違いを比較し、構造を更新するための SQL ステートメントを取得する必要もあります。 たとえば、同じコードセットが開発環境では正常に動作するが、テスト環境では問題が発生する場合があります。この場合、サーバーの設定を確認するだけでなく、開発環境とテスト環境のデータベース テーブル構造に違いがあるかどうかも比較する必要があります。違いを見つけたら、開発環境とテスト環境のデータベース テーブル構造が一致するまで、テスト環境のデータベース テーブル構造を更新する必要があります。 mysqldiff ツールを使用して、データベース テーブル構造を比較し、構造を更新するための SQL ステートメントを取得できます。 1.mysqldiffのインストール方法 mysqldiffツールはmysql-utilitiesパッケージに含まれており、mysql-utilitiesを実行するには依存関係mysql-connector-pythonをインストールする必要があります。 mysql-connector-python のインストール ダウンロードアドレス: https://dev.mysql.com/downloads/connector/python/ mysql-utilities のインストール ダウンロードアドレス: https://downloads.mysql.com/archives/utilities/ 私は Mac システムを使用しているので、brew を直接使用してインストールできます。 brew をインストール caskroom/cask/mysql-connector-python brew をインストール caskroom/cask/mysql-utilities インストール後、バージョンを表示するコマンドを実行します。バージョンが表示されれば、インストールは成功しています。 mysqldiff --バージョン MySQL ユーティリティ mysqldiff バージョン 1.6.5 ライセンスタイプ: GPLv2 2. mysqldiffの使い方 注文: mysqldiff --server1=root@host1 --server2=root@host2 --difftype=sql db1.table1:dbx.table3 パラメータの説明: --server1 はデータベース 1 を指定します 比較は単一のデータベースで実行できます。server1 オプションのみを指定すると、同じデータベース内の異なるテーブル構造を比較できます。 --difftype 差分情報を表示する 統合(デフォルト) コンテクスト 異なる SQL文 SQL 変換文を取得したい場合は、SQL 表示モードが最適です。 --character-set は文字セットを指定します --changes-for は、変換するオブジェクト、つまり差分を生成する方向を指定するために使用されます。デフォルトは server1 です。 --changes-for=server1 は、server1 が server2 に変換され、server2 がプライマリ サーバーになることを意味します。 --changes-for=server2 は、server2 が server1 の構造に変換され、server1 がプライマリになることを意味します。 --skip-table-options AUTO_INCREMENT、ENGINE、CHARSET の違いを無視します。 --version バージョンを表示 mysqldiff パラメータの使用方法の詳細については、公式ドキュメントを参照してください。 3. 例 テストデータベーステーブルとデータを作成する データベース testa を作成します。 データベース testb を作成します。 種皮を使用する。 テーブル `tba` を作成します ( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(25) NOT NULL, `age` int(10) 符号なし NOT NULL, `addtime` int(10) 符号なし NOT NULL, 主キー (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1001 デフォルトCHARSET=utf8; `tba`(name,age,addtime) に値 ('fdipzone'、18、1514089188) を挿入します。 testb を使用します。 テーブル `tbb` を作成します ( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `age` int(10) NOT NULL, `addtime` int(10) NOT NULL, 主キー (`id`) )ENGINE=InnoDB デフォルト文字セット=utf8; `tbb`(name,age,addtime) に値 ('fdipzone'、19、1514089188) を挿入します。 差分比較を実行し、server1 をメイン サーバーとして設定し、server2 を server1 のデータベース テーブル構造に変換する必要があります。 mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb; # ローカルホスト上の server1: ... 接続されました。 # ローカルホスト上の server2: ... 接続されました。 # testa.tba と testb.tbb を比較しています [失敗] # --changes-for=server2 の変換: # テーブル `testb`.`tbb` を変更します 列の変更 addtime addtime int(10) unsigned NOT NULL, 列の変更 age age int(10) unsigned NOT NULL, 列名の変更 name varchar(25) NOT NULL, 名前を testa.tba に変更 、AUTO_INCREMENT=1002; # 比較に失敗しました。1 つ以上の相違点が見つかりました。 mysqldiffによって返された更新SQL文を実行する mysql> テーブル `testb`.`tbb` を変更します -> 列の変更 addtime addtime int(10) unsigned NOT NULL, -> 列の変更 age age int(10) unsigned NOT NULL, -> 列名を変更します。name varchar(25) NOT NULL; クエリは正常、影響を受けた行は 0 行 (0.03 秒) 比較するために、mysqldiff を再度実行します。構造に違いはなく、AUTO_INCREMENT のみが異なります。 mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --difftype=sql testa.tba:testb.tbb; # ローカルホスト上の server1: ... 接続されました。 # ローカルホスト上の server2: ... 接続されました。 # testa.tba と testb.tbb を比較しています [失敗] # --changes-for=server2 の変換: # テーブル `testb`.`tbb` を変更します 名前を testa.tba に変更 、AUTO_INCREMENT=1002; # 比較に失敗しました。1 つ以上の相違点が見つかりました。 AUTO_INCREMENT を無視するように設定し、差異を比較します。比較は成功します。 mysqldiff --server1=root@localhost --server2=root@localhost --changes-for=server2 --skip-table-options --difftype=sql testa.tba:testb.tbb; # ローカルホスト上の server1: ... 接続されました。 # ローカルホスト上の server2: ... 接続されました。 # testa.tba と testb.tbb を比較しています [PASS] # 成功。すべてのオブジェクトは同じです。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript は大容量ファイルのアップロード処理を実装します
目次ローカルミックスイングローバル ミックスイン要約するローカルミックスイン <テンプレート&...
目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...
目次インストール環境の説明MySQLデータベースサービスをインストールするメインライブラリを構成する...
方法は2つあります: 1. サービス方法ファイアウォールのステータスを確認します。 [root@ce...
1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...
序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...
int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...
この記事では、例を使用して、MySQL スライディング順序問題の原理と解決方法を説明します。ご参考ま...
1.コマンドが見つかりません コマンドが見つかりません2. そのようなファイルまたはディレクトリは...
目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....
目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...
目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...
補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...
1. CentOSイメージをダウンロードする1.1 ダウンロードウェブサイトhttp://mirro...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...