Drupal で色々やってたらエラーが表示されるようになった。 どんなエラーかというと、 Got a packet bigger than 'max_allowed_packet' bytes というやつ。
Session データを書き込もうとしていたみたいなんだけど、MySQL があまり長い SQLを受け付けない設定になっていたみたいではじかれてた。
Drupal で色々やってたらエラーが表示されるようになった。 どんなエラーかというと、 Got a packet bigger than 'max_allowed_packet' bytes というやつ。
Session データを書き込もうとしていたみたいなんだけど、MySQL があまり長い SQLを受け付けない設定になっていたみたいではじかれてた。
先ほど EC-CUBEなサイトの夜間 VACUUM 設定が完了したのでメモ。
まずは、以下の感じで crontab に vacuumdb コマンドの実行を指定。この設定だと 4時0分にコマンドが起動される。
0 4 * * * /usr/bin/vacuumdb --analyze -U databaseuser databasenamecrontab(1) コマンドは忘れた事無いけど、一応老後の為に書いておく。以下のようにする事で、username さんの権限で起動するコマンドが指定出来る(例えば、nologin なユーザの設定をしたいときに使う)。
crontab -u username -eついでに中身だけ見るときは
crontab -u username -l行って来ました。関西オープンソース2004。
COREBlog 作者の柴田さんにお声をかけていただいたので、JPUGのブースを手伝ってきました。正直言って PostgreSQL にあんまり詳しくなかったので(結構利用していたのですが、ぜんぜん情報収集してなかった)、私のようなものでも役にたつのか心配でした。まあ、なんとかなったんですが。
柴田さんにお会いしたのは今回がはじめてでした。メーリングリスト等でやり取りをさせていただいたことが何度かあったのですが、いざご本人を前にすると非常に緊張してしまいました。
東京からは、柴田さんのほかに、JPUGの片岡理事長も来られていました。温厚な方で、色々と親切に教えてくださいました。片岡さんにとって PostgreSQLは空気のような存在なのだそうです。
いろんな意味で、本当に楽しかったです。
MySQL が必要だからという理由で xoops の導入をあきらめた人も多いはず。 私も MySQLを使っているものの、PostgreSQLのほうが安心して使えるため(MySQLが安心して使えないというのではなく、PostgreSQLに慣れているので安心して使えるという意味です。)、安定して使えることが判ればこちらのバージョンを積極的に使っていきたいと思う。
先ほどインストールしてみたが、今のところ問題なく動いているようだ。
どうやら大量データの連続挿入はSQLiteの不得意な処理のようだ。と書かれている。1000件程度でこんなにかかるんだったら、10000件だったら160秒ぐらいかかる(単純すぎ。)って事? 実はこれにはからくりがあって、SQLite の処理は トランザクション の中でないと著しく遅いのだ。おそらく、これが原因なのではないかと思っている。
あるプロセスが データを書き換え中に、他のプロセスが書き換えできないようになっているようだ。
仕組みとしては、トランザクション中に、他のプロセスがトランザクションを開始しようとすると、SQLITE_BUSY ってのが返ってくる。 API の sqlite_busy_timeout() を使って、SQLITE_BUSY になるまでの時間をミリ秒で指定できる。
トランザクションの開始だけでなく、DELETE, INSERT, UPDATEなども出来ないようになっている。
FAQ : How do I create an AUTOINCREMENT field. で説明されているように、フィールドを INTEGER PRIMARY KEYで定義しておき、INSERT でそのフィールドに null値を代入すると、自動的に SEQUENCE 値が代入される。
あと、SEQUENCE値として代入された数値を取り出す場合は、API sqlite_last_insert_rowid() を使用する。
中神氏の Web サイトに、SQLite 関連というコンテンツがあり、Python モジュールのインストール方法と、Zope Database Adapter (中神氏が自作されたもののようだ)が置いてあった。
業務では、PostgreSQL を使いつづけていたんだけど、WEB+DB PRESS Vol.18 で見かけた SQLite っていうデータベースをインストールしてみた。
SQLite は、パブリック・ドメインであり、PHP5 に組み込まれているとの事。(MySQL は GPL であるために外されたんだっけ?)