Skip to content

Latest commit

 

History

History
62 lines (42 loc) · 2.61 KB

database.md

File metadata and controls

62 lines (42 loc) · 2.61 KB

データベース

データベースにはMySQL 8.0を使用しています。

Goの構造体へのマッピングライブラリ

マッピングライブラリはgorpを使用しています。選定理由は@p1assのブログをご覧ください。

クエリのSQL文を作る際はGoのファイル上で書くより、GUIのツールで書くと便利です。 Golandを使用しているならデータベースツールが使いやすいです。

スキーマの管理

skeemaというCLIツールを使って管理しています。

スキーマファイルは./mysql/schemasにあります。

特徴

  • 差分のSQLを積んていくのではなく、現在のスキーマの状態をSQLファイルとして管理します。
  • 差分の取り込み、反映はコマンド経由で行います。
  • パット見で現在のスキーマが分かるところがメリットです。

差分をローカルのDBに反映する

upstreamでスキーマが更新された場合は、ローカルのDBにも反映させる必要があります。

SUPERSYSTEM_VARIABLES_ADMINSESSION_VARIABLES_ADMINの権限が必要です。

$ skeema diff local -p
$ skeema push local -p

破壊的な変更がある場合は失敗します。
--allow-unsafe オプションを付けることで適用することができますが、リリースしてからは注意して行うようにしてください。

スキーマを変更するPRを作る

好きな方法(mysqlコマンド、GUIクライアント)などでスキーマを変更してください。その後以下のコマンドで差分を取り込んでください。

$ skeema pull local -p

一般ユーザを使うとき

rootではなく一般ユーザを使う場合は適切に権限を設定する必要があります。

dev環境の場合↓

mysql> show grants for relaym_dev;
+-------------------------------------------------------------+
| Grants for relaym_dev@%                                     |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `relaym_dev`@`%`                      |
| GRANT SESSION_VARIABLES_ADMIN ON *.* TO `relaym_dev`@`%`    |
| GRANT ALL PRIVILEGES ON `_skeema_tmp`.* TO `relaym_dev`@`%` |
| GRANT ALL PRIVILEGES ON `relaym_dev`.* TO `relaym_dev`@`%`  |
+-------------------------------------------------------------+
4 rows in set (0.00 sec)