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

EXISTSについて

今回はEXISTSについてです。 実務では伝票と明細との検索関連の処理で結構出てきます。 なお、達人に学ぶ~では論理学について少しふれており、この領域を本気で理解する場合は論理学を勉強する必要がありま …

no image

SQL基礎 case&groupbyの活用について

主に集計タイプの計算で大活躍するgroupbyについて。 主な用途は集計とカット。特にcase式と連動した集計はかなり使える 例 nameとageで構成されたテーブルがあるとして、年代ごとの人数を出し …

no image

sql_modeに関して

開発では動いていたのに本番ではint型のカラムで空白が入らない!みたいなエラーが出て、データベースにデータが入らないことが発覚し、調査をすることに・・・ sql_modeが原因でした・・・ sql_m …

no image

SQL基礎 条件式はunionよりもcaseで

複雑な条件式があったときにcase式を使うことでパフォーマンスを向上させることができます。 ※一般にunionを使うよりも高速なことが多い。 例1 ある条件により別の列を使いたいとき、 [crayon …

no image

MySQLの大文字、小文字問題について

MySQLでテーブルを作る際にカラムに重複を許さない制約(unique)を振ることがあると思います。 数字の場合は問題ないのですが、文字列の場合、なんと英語の大文字と小文字が区別されません。 つまりa …

アーカイブ