MySQLWorkbenchでER図を作ってそのままデータベースにDDLで流し込む


やりたこと

MySQLWorkbenchでER図を作ってそのままデータベースにDDLで流し込みたい。

経緯

今までER図を書くときはとっかかりが簡単だったのでCacooを使っていたが、その後DDLを書き起こすのが面倒くさいなと思ったので、MySQLWorkbenchで描いてみたらとても良かった。

さらにDDLを実行するところで、MySQLとMySQLWorkbenchのバージョン違いによって少しハマったので、備忘として記載。

環境

  • MySQL5.7.26
  • MySQLWorkbentch8.0.13

手順

基本的なDDL流し込みは以下の手順通り、フォワードエンジニアリングを行えば良い。
https://ti-tomo-knowledge.hatenablog.com/entry/2018/05/21/172936

ただし、最後のDDL実行で、以下のエラーが出てしまった。

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VISIBLE,   INDEX `fk_xxx1_idx` (`xxx_id` ASC) VISIBLE,   INDEX `fk' at line 9;

原因は生成されたINDEXを作る箇所のVISIBLEだった。

INDEX `fk_xxx1_idx` (`xxx_id` ASC) VISIBLE,

これはMySQL8.0からの仕様のため、対象のMySQLが5.7のためエラーとなった。

こちらを発生させないためには
MySQLWorkbench > Preferences > Modeling > Default Target MySQL Versionを該当のバージョンにしてから再実行すると、そのバージョンとして動作するDDLが生成される。

上記で解決して無事にDDL実行が完了した。

感想

MySQLを利用するなら、ER図はMySQLWorkbenchでの作成が一番便利だと思う。

参照