MySQL

latin1 で作ってしまったデータベースを phpMyAdmin で文字化けせずに export する方法

phpmyadmin_export.png
昨晩は EC-CUBEで構築された、とある EC サイトの移行作業であった。 フリーエンジニアの場合、夜中に作業出来ることを重宝されることがある。今回のような移行作業は特に。ようは、お買い物に来る人が少ない時間帯に移行作業をやってしまおうってやつだ。

昼間のうちに必要な情報はすべて集め、夜までは他の仕事をこなしつつ、約束していた移行作業の開始時間を待っていた。

「そういえば、MySQLのダンプを忘れていたなー。phpMyAdmin がインストールされているはず(今回の作業を引き受ける条件として、phpMyAdminがインストールされているサーバという話をしていたので)なんだけど、URLを聞くのを忘れていたなー」

ということでお客さんに電話した。

「えっと、管理画面とかそういうの無いんですよ。確認して折り返し電話します。」

という回答。嫌な予感。

MySQL で Got a packet bigger than 'max_allowed_packet' bytes エラーが発生した

Drupal で色々やってたらエラーが表示されるようになった。
どんなエラーかというと、 **Got a packet bigger than 'max_allowed_packet' bytes** というやつ。

Session データを書き込もうとしていたみたいなんだけど、MySQL があまり長い SQLを受け付けない設定になっていたみたいではじかれてた。

SQLite の INSERT は遅いのか?

MySQLとSQLite(PrinCo.)という記事経由で、生まれ変わるPHP - Zend Engine 2、SQLiteの実力は?(MYCOM PC WEB)という記事を読んだ。 MySQL と SQLite で INSERT 時の処理速度が公開されている。 1000件のレコードのINSERTを実行し、それぞれにどれぐらいの時間がかかっているかを示しているのだ。 MySQLが 0.4秒、SQLite が 16秒だというのだが、これはあまりにもひどすぎる。しかも、結論としてどうやら大量データの連続挿入はSQLiteの不得意な処理のようだ。と書かれている。1000件程度でこんなにかかるんだったら、10000件だったら160秒ぐらいかかる(単純すぎ。)って事? 実はこれにはからくりがあって、SQLite の処理は トランザクション の中でないと著しく遅いのだ。おそらく、これが原因なのではないかと思っている。