Wordpressで使うデータベース(MySQL)を色々操作しています。WP3.0.3未満の脆弱性対策の一環です。長年書いているとデータは膨大になります。それをうけもつDB(MySQL、データベース)も大容量に。データベースをテーブルに分割しても、一回のロード容量(2MBとか5MBとか色々)を超えるというようなものになっているのに出くわしました…うわっ!
phpMyAdminを使っていると、DBを一括か、まれにそれをテーブルに分割し計2回でupload成功となるのがこれまでの経験でした。今回のようにテーブル自体が容量制限または時間制限(接続タイムアウト)に引っかかるほどの大きさというのは、爺には難題です。
- 容量エラーなどでひっかかるほどの大きなテーブルが見つかったら、他のテーブルとは別のSQLファイルに仕立てます。区切りは、「#既存テーブル***の削除」があればその前、なければ「#テーブル***のテーブル構造」の前、かと…。
- 別テーブルにしても同様にエラーになるような大きさであれば、テーブルの途中まで(「INSERT INTO」がレコード単位になるのでその行の中では分割しない)を1回目のupload用、それ以降を2回目、というようにキッチリ分割して別SQLファイル(=拡張子がsqlとなる、UTF-8のBOMなしLF改行のテキストファイル)として保存し、順にインポートさせる
というような手順でした。
何か複雑な書き直しが必要かと最初思ったのですが、DROPとかCREATEなど、テーブルの所在そのものを問い必要な設定をするのは最初の該当sqlファイルだけでOKかと。同一テーブル2回目用のsqlファイルは、「INSERT INTO `wp_abcd_posts` VALUES (25000, 'ad…);」などという具合に、行頭がINSERT分で始まっていればそのまま追加読み込みしてくれる、みたいでした~。まあ、sql知ってる人には当たり前のことなんでしょうけど、ビクビク小心者の暗愚な爺にはハラハラドキドキのチャレンジなのでありました。って、テスト環境なのにね…本番だと心臓が飛び出しそうになるかも…。はたして、そこまでたどり着けるかという問題も…グスン。
操作の結果、新しいテーブルができ、すでにあるよ~(Already exist)などというエラーが出たら、DROP(削除)が無くて、CREATE(作成)があるということなので、phpMyAdminのDBテーブル表示画面で削除するなどの作業が必要かと…。
良い子のみなさんは、真似しないでくださいね。爺の備忘録です。