ERDでの管理は諦めました
昨日今日と色々とMySQLと格闘して、前の記事ではERMasterでいいよねという感じで一旦落ち着いたのですが・・・
ダメなERMaster
データを精査していて、MySQLからERMasterへインポートした際に、カラムのdefault値が変わっている ものがあることに気がつきました。
元のスキーマの設定が悪いのか、ERMasterが悪いのかはわかりませんが、とにかく値が変わるようなもんは かなわんということで、ERMasterの使用は却下。
おせっかいなWorkbench
じゃあWorkbenchはっていうと、Tableのデフォルトでわざわざ collation(文字コードのソート順)を utf8_unicode_ci に設定しているのに、 勝手にカラムにutf-8のchar設定を追加して、カラムのcollationまでutf8(つまりutf8_general_ci) になるという 余計なお世話状態。
A5:SQLはお呼びでない
A5:SQL Mk-2は、そもそも型がMySQLのプリミティブじゃなくてちょっとアレなので論外。
惜しい SI Object Browser ER
SI Object Browser ERですが、さすが有償ツールだけあってかなりいいところまでは行きますが、 MySQL専用ではないのでインポート時にMySQLのcollationが取り込めません。
結局、エクスポートするとchar設定のutf-8につられて、collationもutf8になります。
すべてのテーブルがそうなるのでシステムとしては整合が取れてちゃんと動くはずですが、アプリケーションの動作が変わってくるので未検証の状態では変更したくないですよね・・・
とは言っても、OBERの場合はPost DDL のところで create文の後に任意で実行するクエリを追加できますので、
alter table HOGE Collate utf8_unicode_ci;
でも加えてやるのが現実的な解決方法でしょうか。
余談ですが、OBERの edmファイルはxmlファイルなためスクリプトでいじるのも割と簡単だったりします。 とはいえ、そこまでの気力も工数も無くなっているので、今回はOBER万歳! で終わっておきます。
Workbenchの差分の比較より、structureをexportしてdiffをとる方がよほど安心というのがよくわかりました・・・