拙著「株はタイミングで儲けなさい」が発売されました。
過去20年間の株価データを元にバックテストを行い、どのようなタイミングで株を買うのが良いかを解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
カスタムフィールドの型を変える(その3)
カスタムフィールドの型を変更する場合、変更前後でデータの保存先の列が異なる場合もあります。
その時は、昨日の記事の作業を行った上で、データの保存先の列を変えることも必要になります。
今日は、ウェブサイト/ブログ/ユーザー以外のカスタムフィールドの場合を取り上げます。
1.注意事項
昨日と同様に、この記事で取り上げる方法では、データベースを直接に操作します。
操作を間違うと、Movable Typeのデータ(特にカスタムフィールドのデータ)が壊れることもあり得ます。
データベースを操作する前に、データを必ずバックアップしておいてください。
また、バックアップしたデータを正しく復元できることも確認しておいてください。
操作ミスでデータが壊れたとしても、当方は責任を負いません。
2.mt_fieldテーブルの書き換え
まず、昨日の記事に書いた手順で、mt_fieldテーブルを書き換えておきます。
3.データの移動
次に、以下のようなデータの保存先の列を変えるために、以下の2つのSQLを実行します。
1つ目のSQLで、移動元の列から移動先の列にデータをコピーします。
そして、2つ目のSQLで、移動元の列のデータを削除します。
1つ目
UPDATE mt_○○○_meta, mt_○○○ SET ○○○_meta_□□□ = ○○○_meta_△△△ WHERE ○○○_id = ○○○_meta_○○○_id AND ○○○_blog_id = ◇◇◇ AND ○○○_meta_type = 'field.◎◎◎'
2つ目
UPDATE mt_○○○_meta, mt_○○○ SET ○○○_meta_△△△ = NULL WHERE ○○○_id = ○○○_meta_○○○_id AND ○○○_blog_id = ◇◇◇ AND ○○○_meta_type = 'field.◎◎◎'
上記のSQLにある記号は、それぞれ以下に置き換えます。
記号 | 置き換える内容 |
---|---|
○○○ | オブジェクトの型名(後の表を参照) |
□□□ | データの移動先の列名(一昨日の記事を参照) |
△△△ | データの移動元の列名(一昨日の記事を参照) |
◇◇◇ | ウェブサイト/ブログのID |
◎◎◎ | カスタムフィールドのベースネーム |
また、オブジェクトの型名には、以下の値を指定します。
オブジェクトの種類 | 型名 |
---|---|
ブログ記事またはウェブページ | entry |
カテゴリまたはフォルダ | category |
アイテム系(アイテム/オーディオ/ビデオ/画像) | asset |
コメント | comment |
テンプレート | template |
4.事例
例えば、以下の状況だとします。
- ブログのIDが2番
- ブログ記事にテキスト型のカスタムフィールドがある
- ベースネームはentry_url
- テキスト型からURL型に変えたい
この場合、まず以下のSQLで、mt_fieldテーブルを書き換えます。
UPDATE mt_field SET field_type = 'url' WHERE field_blog_id = 2 AND field_basename = 'entry_url'
次に、データを移動します。
テキスト型/URL型では、データはそれぞれvchar_idx/vchar列に保存されています。
そこで、以下の2つのSQLを実行します。
1つ目
UPDATE mt_entry_meta, mt_entry SET entry_meta_vchar = entry_meta_vchar_idx WHERE entry_id = entry_meta_entry_id AND entry_blog_id = 2 AND entry_meta_type = 'field.entry_url'
2つ目
UPDATE mt_entry_meta, mt_entry SET entry_meta_vchar_idx = NULL WHERE entry_id = entry_meta_entry_id AND entry_blog_id = 2 AND entry_meta_type = 'field.entry_url'