skillup

技術ブログ

Database

MySQLのマイグレーション(workbench使用)

投稿日:2015年12月4日 更新日:

以前cakePHPにてマイグレーションの手法を紹介したのですが、当然PHP以外をつかっていたり、PHPでもcakeを使っていなければこの方法は通用しません。

何か、汎用的にデータベースの構造の差分がチェックできるツールはないかなと思い、探していたところ下記ツールがよいとの情報を得て、早速試してみました。

以前紹介したA5M2にあればベストだったんですが、この機能はついていませんでした・・・

MySQL workbench

https://www-jp.mysql.com/products/workbench/

Oracleのアカウントとかをもってないと登録作業なんかがいろいろと面倒くさいです。

また日本語化することもできるようですが、かなり面倒くさそうだったのと(爆)、情報が結構でてくるので、なんとか英語でやることにしました。

ちなみに2015年12月上旬現在、最新は6.3です。

mysqldump

差分のチェックですが、データベースを直接みてもいいですが、自分は怖かったので構造だけをダンプし、そのファイルをベースに差分をチェックしました。

下記コマンドでダンプを行います。

実行したあとにファイルをみているとひたすらcreate文が書かれているのがわかると思います。

MySQL workbentch

ここからツールを使います。

ツールを起動後、File→NewModelを実行すると新しい画面が作られます。

新しい画面に移って、Database→Synchronize With Any Sourceを押すとダイアログが開きますので、Next。

Database To TakeUpdates FromとDatabase To Receive Updatesにそれぞれdumpで作ったテーブルの構造ファイル(~.sql)を入れてあげればOKです。差分SQLを保存するパスもいれてあげましょう。

その後、Nextを入れた後、チェックボックスをいれてあげて、進めてあげると差分チェックをしてくれます。

SQL文も書かれていますが、これはReceive UpdatesをTakeUpdatesにするためのSQL文という意味です。

参考リンク

MySQL Workbenchを使ってスキーマの差分をとってALTER文を生成

-Database
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Postgresの基礎(主にMySQLとの違いなど)

えー来月(2020年3月)より、postgresを使うかもしれないので、ちょっと復習を。 Contents1 以前のリンク2 基本コマンド比較2.1 超頻出系3 テーブル比較4 SELECT文5 do …

no image

MySQLのロックに関して+サブクエリ内のupdate

MySQLのロックに関して。 データベースではデータの整合性を保つために読み書きを一時的に制限する仕組みがあります。(データベースだけではないですが・・・) 大きく分けると共有ロック(書き込みは当然だ …

no image

dbUnitの使い方

えーJavaで有名なテストツールDBUnitについて。 DbUtilではありませんので間違えないように。(私は最初間違えました・・・) まだ全然使い込んでるわけではありませんがどんなことができるかとい …

no image

NOT EXISTSの利用

引き続きNOT EXISTSの利用です。 思った以上に使えますね・・・がムズイ。 今回は下記のようなテーブル(seats)があるとします。 ケースとしては新幹線の座席番号で空は席が空いている状態、占は …

no image

論理設計のアンチパターン

今回からは論理設計のアンチパターンについて。 やってはいけない設計のパターンですね。これはまわりがやっていると気づかずにやっている可能性があるのでしっかりメモしておきたいです。 Contents1 非 …

アーカイブ