はい、kawamotoです 皆さん仕事でデータベースを触っていると本番環境、検証環境、開発環境など、複数の環境を扱うことになりますよね。 複数の環境を扱っていると環境によってテーブルのスキーマの差分ができてしまうのを防ぐ必要が生じます。 今回は、複数の環境の整合性を保つ方法について考えてみたいと思います。 探したもの 要件を列挙してみます。上の方が優先度高めです。 MySQLで使える 筆者の都合です 複数の環境のデータベースからテーブル定義を抜き出してきて比較できる 複数の環境とネットワーク的に直接やり取りしなくて済むようにバイト列として直列化できるとなお良い 差分の解消に必要なALTER文を発行したり出力できたりする 必然的にDBMSの種類に依存しそうですね 導入・運用が面倒じゃない 特定のORMやフレームワークに依存しない 管理された差分と管理されていない危険な差分を区別して認識でき、
![DBIx::DBSchema: 環境ごとのテーブルスキーマを管理したい、したかったんだ… - Articles Advent Calendar 2011 Dbix](https://cdn-ak-scissors.b.st-hatena.com/image/square/c8a980617f4b3456f78024441b2084585cb2e97a/height=288;version=1;width=512/https%3A%2F%2Fres.cloudinary.com%2Fkfly8%2Fimage%2Fupload%2Fl_text%3ANotoSansJP-Black.otf_50_bold%3ADBIx%253A%253ADBSchema%253A%2520%25E7%2592%25B0%25E5%25A2%2583%25E3%2581%2594%25E3%2581%25A8%25E3%2581%25AE%25E3%2583%2586%25E3%2583%25BC%25E3%2583%2596%25E3%2583%25AB%25E3%2582%25B9%25E3%2582%25AD%25E3%2583%25BC%25E3%2583%259E%25E3%2582%2592%25E7%25AE%25A1%25E7%2590%2586%25E3%2581%2597%25E3%2581%259F%25E3%2581%2584%25E3%2580%2581%25E3%2581%2597%25E3%2581%259F%25E3%2581%258B%25E3%2581%25A3%25E3%2581%259F%25E3%2582%2593%25E3%2581%25A0%25E2%2580%25A6%2Cco_rgb%3A000000%2Cw_900%2Cc_fit%2Fl_text%3ANotoSansJP-Black.otf_30_bold%3Ak12u%2Cco_rgb%3A000000%2Cg_south_east%2Cx_130%2Cy_120%2Fv1601626948%2Fog-perl-users-jp.png)