ActiveRecord でテーブルが CREATE TABLE されるときに、ROW_FORMAT=DYNAMIC を自動的に追加する方法を見つけたのでメモ。
とりあえず RAILS_ROOT で以下のシェルスクリプトを流せば OK です。
† 参考
MySQL や MariaDB で文字コードを utf8mb4 にしようとすると以下のようなエラーに遭遇することがあります。
Error 1709: Index column size too large. The maximum column size is 767 bytes.
例えばこんな感じでデータベースを作ったときですね。
これはInnoDB の最大キー長が 767 バイトに制限されているため。
この制限はある条件をクリアすると 3072 バイトまでに緩和*1することができます。
その条件は row_format が DYNAMIC もしくは COMPRESSED (これを設定するためには innodb_file_format が Barracuda であることが必要になります)であり、innodb_file_per_table、innodb_large_prefix が有効になっていること。具体的には my.cnf に以下のような設定を記述するだけです。ちなみに以下の設定は既に作成済みのテーブルには効果がないので、設定変更後にテーブルを作り直す必要があることに注意が必要です。
/etc/my.cnf.d/server.cnf
最後の行の設定ができない場合には、テーブルの CREATE 文に以下のような感じでROW_FORMAT=DYNAMIC を追加してやる必要があります。
今日は突然、電気設備の点検がやってきたのでびっくり。
調査員さんが配電盤付近で漏電の調査を行い、写真の点検表を渡していきました。所要時間は3分ほどでした。おそらくアパートに引っ越してから始めてのことだと思うので、聞いてみたところ4年に1回実施しているとのこと。
東電パワーグリッドのウェブを調べてみると確かに4年に1度という記載がありました。
東京電力パワーグリッド(株)では、電気を安心してお使いいただくために、法律にもとづき4年に1度以上、お客さまの電気設備(自家用電気工作物を除く)の安全調査を実施しています。
上記の「法律にもとづき」というのが気になったので、経産省のウェブで調べてみると、電気工作物の保安に詳細が掲載されていました。これによると、一般家庭の電気設備は「一般用電気工作物」というカテゴリになるようです。
この一般用電気工作物の調査については電気事業法 第五十七条に定めがあり、電気事業法施行規則 第九十六条2の一のイに調査の頻度は四年に一回以上と定められていました。これによると、占有者の承諾を得ることができない場合にはこの限りでないとあるので、留守だったりした場合には調査しなくてもよいみたいですね。そんなわけで、これまでは気づかなかったのだろうと思います。
ちなみに、遅滞なく結果を通知しなければならないようなので、すぐに結果の紙を渡すところまでが義務だったようです。
電気事業法
(調査の義務)
第五十七条 一般用電気工作物と直接に電気的に接続する電線路を維持し、及び運用する者(以下この条、次条及び第八十九条において「電線路維持運用者」という。)は、経済産業省令で定める場合を除き、経済産業省令で定めるところにより、その一般用電気工作物が前条第一項の経済産業省令で定める技術基準に適合しているかどうかを調査しなければならない。ただし、その一般用電気工作物の設置の場所に立ち入ることにつき、その所有者又は占有者の承諾を得ることができないときは、この限りでない。
2 電線路維持運用者は、前項の規定による調査の結果、一般用電気工作物が前条第一項の経済産業省令で定める技術基準に適合していないと認めるときは、遅滞なく、その技術基準に適合するようにするためとるべき措置及びその措置をとらなかつた場合に生ずべき結果をその所有者又は占有者に通知しなければならない。
(一般用電気工作物の調査)
第九十六条 法第五十七条第一項の経済産業省令で定める場合は、次のとおりとする。
・・・・・・
2 法第五十七条第一項の規定による調査は、次の各号により行うものとする。
一 調査は、一般用電気工作物が設置された時及び変更の工事(ロに掲げる一般用電気工作物にあっては、受電電力の容量の変更を伴う変更の工事に限る。)が完成した時に行うほか、次に掲げる頻度で行うこと。
イ ロに掲げる一般用電気工作物以外の一般用電気工作物にあっては、四年に一回以上