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

SQL問題

今までやったSQL問題などのまとめ。定期的にやる予定です・・ 自分用なのでテーブルデータとかあったりなかったりいい加減です(汗) SQLドリル 問題1 nameとageで構成されたテーブルがあるとして …

no image

GlassFishでDB接続

JavaEEではアプリケーションサーバーとしてGlassFishを使いますが、先日、GlassFishを通さないとJavaEEでDBが動かせないということを知りました。そのためJavaEEではデータベ …

no image

CASE式のすすめ その2

本日も「達人に学ぶSQL徹底指南書」を地道に進めていきます。 Contents1 CASE式の利用2 UPDATE文のCASE3 テーブル同士のマッチング CASE式の利用 私自身はCHECK制約を使 …

no image

MariaDBインストール

CentOS7からはyumでmysqlをインストールするとMariaDBがディフォルトになるようです。 せっかくなので、これを機にMariaDBを使ってみました。といってもMySQLとほとんど一緒でし …

no image

サブクエリ 移動平均など

前回の応用編です。 日付、入出金、残高はできましたが、ここからさらに、現在のレコードから3行以内(3行あれば3行、なければそれ以内でできるだけ)のレコードの合計値を出す計算を考えます。 結果だけ先に書 …