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

dbUnitの使い方

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

no image

SQL結合 サブクエリに関して

今回はサブクエリに関してです。 もちろんSQL実践入門を読み進めています。 SQL上ではテーブル、ビュー、サブクエリというのは機能的にはそれほど変わらず主にパフォーマンスの点で違いがでてきます。 以下 …

no image

MySQLでの日付関数

MySQLでSUMやCOUNTなんかはよく使うと思うのですが、日付の関数なんかもかなり使います。 今回は、日付の日数をとりたいときの関数を紹介。 例えばあるカラムにある日付が入力されており、現在との日 …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

DBUtils活用

普段はJavaEEで開発を行っているのでデータベースへのアクセスはJPAを活用しています。 ただ、JavaEE環境だとglassfish経由でデータベースを動かしているので、glassfishを動かさ …