環境
- Rails 5.2
やりたいこと
RailsのMySQLでMyISAMを使いたい。が、指定しないとInnoDBになってしまう。RailsだとマイグレーションスキーマのCreate tableに毎回書かなきゃいけなくて面倒。
かといってMySQL側でデフォルトでセットしようにも
[mysqld] default-storage-engine = MyISAM
みたいにMySQL全体の設定しかないため、データベースごとに個別の設定ができない。
これをなんとかしたい(
解決策
対症療法感あるが、database.ymlに書く。
development: <<: *default database: hoeghoge variables: storage_engine: MyISAM
variablesに書いた記述はMySQLが走るまえに SET key = value;
のクエリと実行される。
そのため上記だと
SET storage_engine=MyISAM;
が毎回クエリの直前に実行されるので、常にMyISAMとなるってわけ