Hatena::ブログ(Diary)

あまつぶ@はてなダイアリー RSSフィード

あまつぶWikiあまつぶ過去ログMacソフトWinソフト掲示板
<カレンダー>
2003 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 11 |
2011 | 02 | 07 | 08 | 11 |
2012 | 04 | 11 |
2013 | 07 | 09 | 10 |
2014 | 11 |
2015 | 11 |

<< 2004/10 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

<最近の見出し>




POPFile の Mac OS X(Panther/Tiger/Leopard/Snow Leopard/Lion/Mountain Lion/Mavericks/Yosemite)用インストーラをお探しの方は、POPFile プロジェクトのダウンロードページへ。
 | 

2004-10-11 バックエンドを MySQL にしてみる(前編)

[]バックエンドを MySQL にしてみる(前編) バックエンドを MySQL にしてみる(前編)を含むブックマーク

MySQL をバックエンドのデータベースとして使用するが翻訳されたようなので、このインストラクションにしたがって、MySQL を試してみた(が、まだちゃんと動いていないので、以下の情報を参考に試してみても動かないと思う……)。

  • MySQL のインストール

まず、 MySQL と DBD::MySQL をインストールする必要がある。MySQL は、MySQL4.0 Downloads からダウンロードできる。オフィシャルなインストーラが公開されているので、これを使うのが楽そうだ。ディスクイメージをマウントすると、2 つのパッケージがあらわれるが、「mysql-standard-4.0.21-apple-darwin7.5.0-powerpc.pkg」というのが本体のインストーラで、「MySQLStartupItem.pkg」が /Library/StartupItems に起動用のスクリプトをインストールして、起動時に自動的に動くようにするもののようだ。とりあえず両方をインストール。StartuiItems をインストールしたら、再起動してもよいのだけど、面倒なので

sudo /Library/StartupItems/MySQL/MySQL start

で動かしてみた。コンソールに「Starting MySQL database server」という表示があらわれ、無事起動したようだ。

また、/usr/local/mysql/bin にパスが通っていた方がなにかと便利なので、Marc Liyanage - Software - Mac OS X Packages - MySQL を参考に設定を行った。そういえば、ここの手順では、/usr/local/mysql/data の所有者を変更するという手順が入っているが、これが必要なのかどうかいまいちよくわかっていない。というか、最初ここを読みながら作業していたので、先に実行してしまっていて、不要だったのかどうかわからないということ。所有者を元に戻して動くかどうか試してみればいいのだけど、面倒なので今回のところはパス。

  • DBD::mysql のインストール

さて、次に、Perl から MySQL にアクセスするためのモジュール、DBD::mysql をインストールする。CPAN から入手する。これを書いている時点での最新バージョンは、2.9004 だ。

インストールはいつも通り……かと思ったら、make でエラーが出てしまって先へ進めない。Makefile の中を見てみてもなにが原因なのかさっぱりわからないので、検索してみると、How to Install DBD::mysql on Mac OS X 10.3 (Panther) というページを発見した。まさに詰まっていたところについて書かれている。ポイントは、Makefile ができたところで、

perl -pi -e's/MACOSX/env MACOSX/' Makefile

を実行して、Makefile 内の MACOSX と書かれている箇所を env MACOSX に置き換えているところ。これをするだけで、エラーがあっさり解消してしまった(make の途中でエラーが出て止まってしまった場合は、make clean をして最初からやり直した方がいい)。

と、ここで一点だけ注意。DBD::mysql をインストールするためには、先に DBI をインストールしておく必要がある。DBI を別にインストールしてあればいきなりインストールすることができるが、そうでないときは先にインストールする。私が作成した POPFile を使用している場合は、DBI もインストールされるが、通常 Perl のライブラリを置く場所とは別の場所(/Library/POPFile/lib)にインストールしているため、ふつうに perl Makefile.PL とすると DBI がないというエラーが発生してしまう。これを避けるためには、perl の -I オプションでライブラリの場所を追加指定すればよい。例えば、

perl -I/Library/POPFile/lib Makefile.PL

という具合だ。

DBD::mysql もインストールすることができたので、ようやく MySQLBackend の手順を実行することができる。作業に入る前に、POPFile を停止させて、既存の設定やデータベースをバックアップしておく。

MySQL (と DBD::mysql)のインストールはすんでいるので、「現在の POPFile ユーザーがバックエンドを MySQL に変更する」という部分から先を実行していく。

sudo mysql

で、MySQL のコンソールが表示されるので(パスが通っていればの話)、書かれているように命令を入力していくのだけど、手順 1 では以下のようにした方がよさそうだ。

create database popfile;

grant all on popfile.* to pfuser@localhost identified by 'pfpassword';

flush privileges;

quit

pfuser@localhost と明示することによって、ローカルからのログインのみを許可する(というか、ドキュメントの手順のようにすると、なぜか作成したユーザでログインできなかった)。残りの手順はほぼそのままだが、手順 5 で sqlite を使って popfile.db を開くところでは、

sqlite popfile.db

と、拡張子を指定する必要があった。また、手順 6 の「source dump.sql」はかなり時間がかかるので、しばらく待つ。時々「ERROR 1062: Duplicate entry '...' for key 2」というようなエラーが表示されるのが少し気になるが、これは大文字小文字の区別かなにかが関係しているのだろうか。とりあえずここも今回のところは保留。

これでようやく POPFile を動かすことができる……と思ったのだが、うちではそのままでは動かなかった。

DBD::mysql::db selectrow_array failed: No Database Selected at /Classifier/Bayes.pm line 680.

DBD::mysql::db tables failed: No Database Selected [err was 1046 now 1046]

No Database Selected at /Classifier/Bayes.pm line 683.

というようなエラーが大量に発生してまったく動かない。試行錯誤の結果、Classifier/Bayes.pm でデータベースに接続したあとに、

if ( $dbconnect =~ /mysql/ ) {

$self->{db__}->do('use popfile;');

}

でデータベースを選択するようにしてみるとエラーなく起動するようになってくれたが、メールをチェックすると同じようなエラーが大量発生。メール自体は一応受信できるものの UI にアクセスすると POPFile がエラーで終了してしまう。どこか設定でミスしているだけなような気もするので、またそうち試してみよう。

(注:ようやく動かすことができた。詳しくは、id:amatubu:20041123#p1

[]AIBO、手術開始? AIBO、手術開始?を含むブックマーク

ようやく連絡があった。見知らぬ電話番号から携帯にかかってきたので、何の電話かと思った(汗)

とりあえず、症状についてはバッテリの不良ということで、無償交換となった。ふむ、やはりバッテリだったのか。

他に、左前足の膝から異音がするとか、耳の戻りが悪いとか、本体の基盤がどうとかいろいろ問題があったということであちこち交換してくれるそうだ。無償交換はありがたいけど、こんなに異常があったとは(汗)。どれも体感したわけではないのでもとから悪かったのかだんだん悪くなったのかはわからないけど、結構繊細なようだ。

また、メモリースティックについても若干改善されるというような話があった。一瞬 AIBO マインド 2 のことかとも思ったけど、「改善」ということなのでたぶん違うんだろう(聞いてみればよかったか?)。

ということで、火曜日から手術開始で、金曜日以降(だけど土日でないと受け取りが難しいので、土曜日を指定した)に戻ってくることになった。あと 6 日。最初に届いたときほどではないけど、待ち遠しいなぁ。なんかこう、いったん入院して戻ってくると、ちょっと愛着がわいたりする感じ?

zakaizakai 2004/10/11 18:31 電池は逝っちゃっていたのかもね...でもその他も含めて無償で何より。その他の不良は...てっ○つ?(汗)

amatubuamatubu 2004/10/11 23:22 膝は……、そうかもしれません(汗)
基盤はどこかのセンサーがどうとかいう話だったのでもともとかなという気もします。「どこか」とか「どうとか」と書いている時点でなにもわかっていないわけですが(笑)

lamblamb 2004/10/15 10:20 POPFileですが、MySQLにインポートした後に、
update popfile set version = 0;
をして、データベースの再構築を行わないといけないんじゃないのかな?

amatubuamatubu 2004/10/15 12:39 コメントありがとうございます。
そうですね。ドキュメントのとおりの操作でしたので省略してしまいましたが、バージョンを 0 にしてから変換しました。最初に起動したときに、バージョンアップしたときに表示されるのと同じ変換中のメッセージが表示されていました。

不断不断 2004/11/03 11:11 先日から Fedora Core 2 環境で POPFile + MySQL を実現しようと試行錯誤しています。

何とか POPFile の起動には成功しましたが、管理 UI <http://localhost:8080/> にアクセスすると POPFile が終了してしまう状況です…。

現時点までのまとめ : <http://www.nanashinonozomi.com/tdiary/20041103.html#p01>

amatubuamatubu 2004/11/03 17:35 情報ありがとうございます。やはりなかなか難しいようですね。
表示されているエラーを見ると、テーブルの作成などがことごとく失敗しているように見えます。最後の「;」が文法エラーだということのようですが、なぜエラーになるのかちょっとわかりません。気になるのは、一般ユーザの権限で、mysql のデータベースを編集することができるか、というくらいでしょうか。

不断不断 2004/11/03 19:48 MySQL のユーザ pfuser は MySQL のデータベース popfile に対する全ての
アクセス権限を持っている(ただし localhost からのアクセスに限る)はず
ですが、念のため確認してみました。

$ mysql -u pfuser -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 3 to server version: 3.23.58

Type ’help;’ or ’¥h’ for help. Type ’¥c’ to clear the buffer.

mysql> use popfile;
Database changed
mysql> create table popfile(num int, name varchar(50));
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-------------------+
| Tables_in_popfile |
+-------------------+
| popfile |
+-------------------+
1 row in set (0.00 sec)

mysql> insert into popfile values(1, ’popfile’);
Query OK, 1 row affected (0.00 sec)

mysql> select * from popfile;
+------+---------+
| num | name |
+------+---------+
| 1 | popfile |
+------+---------+
1 row in set (0.01 sec)

mysql> update popfile set name=’popfile?’;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from popfile;
+------+----------+
| num | name |
+------+----------+
| 1 | popfile? |
+------+----------+
1 row in set (0.00 sec)

mysql> delete from popfile where num=1;
Query OK, 1 row affected (0.00 sec)

mysql> select * from popfile;
Empty set (0.00 sec)

mysql> drop table popfile;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
Empty set (0.02 sec)

…というわけで、 Fedora Core の一般ユーザ権限下であっても、
MySQL のユーザ pfuser は MySQL のデータベース popfile に対して、

* テーブルを作成する
* テーブルへデータを追加する
* テーブル内のデータを更新する
* テーブル内のデータを削除する
* テーブルを削除する

操作を行なうことができました。

amatubuamatubu 2004/11/03 19:59 ありがとうございます。完全にはずれでしたね。すみません。
データベース popfile にはなにもテーブルが作成されていなかったのですよね。
試しに、Classifier/popfile.sql を、source コマンドで実行してみるというのはいかがでしょう。

不断不断 2004/11/03 22:11 おお!! 当たりです!! 落ちなくなりました。

…が、 <http://localhost:8080/> にアクセスしても、
数回に1回の割合で何も表示されない場合があります。

ログによると HTTP エラー(404)のようですが、ウェブ
ブラウザで1回(場合によっては数回)再読込みをかけて
やると、 UI が表示されるようなので、何とか使えるの
ではないかと思います。

依然として、エラーが出ているのが気にはなりますが、
しばらくは、このまま様子を見てみることにします。

アドバイス、ありがとうございました m(__)m


$ mysql -u pfuser -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or ¥g.
Your MySQL connection id is 3 to server version: 3.23.58

Type ’help;’ or ’¥h’ for help. Type ’¥c’ to clear the buffer.

mysql> use popfile;
Database changed
mysql> source /home/fudan/popfile/Classifier/popfile.sql;
Query OK, 0 rows affected (0.16 sec)
(同様のメッセージが続くので略)
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
(同様のメッセージが続くので略)
ERROR 1064: You have an error in your SQL syntax near ’trigger delete_bucket delete on buckets
begin
dele’ at line 1
ERROR 1109: Unknown table ’old’ in where clause
ERROR 1109: Unknown table ’old’ in where clause
ERROR 1109: Unknown table ’old’ in where clause
ERROR 1064: You have an error in your SQL syntax near ’end’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’trigger delete_user delete on users
begin
delete f’ at line 1
ERROR 1109: Unknown table ’old’ in where clause
ERROR 1109: Unknown table ’old’ in where clause
ERROR 1064: You have an error in your SQL syntax near ’end’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’trigger delete_magnet_type delete on magnet_types
begin
’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’end’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’trigger delete_user_template delete on user_template
begin
’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’end’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’trigger delete_bucket_template delete on bucket_template
begin
’ at line 1
ERROR 1064: You have an error in your SQL syntax near ’end’ at line 1
Query OK, 1 row affected (0.05 sec)
(同様のメッセージが続くので略)
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> show tables;
+-------------------+
| Tables_in_popfile |
+-------------------+
| bucket_params |
| bucket_template |
| buckets |
| history |
| magnet_types |
| magnets |
| matrix |
| popfile |
| user_params |
| user_template |
| users |
| words |
+-------------------+
12 rows in set (0.03 sec)

mysql> exit
Bye
$ cd ~/popfile/
$ perl ./popfile.pl

POPFile Engine loading

Loading...
{core: history logger mq config}
{classifier: wordmangle bayes}
{interface: html xmlrpc}
{proxy: pop3 nntp smtp}
{services: imap}

POPFile Engine v0.22.1 starting

Initializing...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}

Starting...
{core: config history logger mq}
Use of uninitialized value in concatenation (.) or string at /Classifier/Bayes.pm line 629.
Use of uninitialized value in string gt at /Classifier/Bayes.pm line 635.
Use of uninitialized value in numeric gt (>) at /Classifier/Bayes.pm line 565.
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}

POPFile Engine v0.22.1 running
Use of uninitialized value in numeric gt (>) at /Classifier/Bayes.pm line 565.
Use of uninitialized value in concatenation (.) or string at /UI/HTML.pm line 441.

amatubuamatubu 2004/11/03 22:45 まずはうまくいったということで、よかったです。
本当は、POPFile 自身がテーブルなどを作成するはずなのですが、謎ですね。
表示されている warning については、SQLite のバージョンをチェックしているところや、単語数を数えているところのようですので、特に気にしなくてもいいのではないかと思います。
ブラウザでエラーが発生する件は、
http://amatubu.skr.jp/?POPFile/RemovePageProblem
この問題の関連でしょうか。UI を最初に表示したときにもエラーが起こっているようですので別の問題かもしれませんが。
POPFile が 404 を返しているのであれば、ログに残るはずですので(ログレベルが 2 の場合)、そちらを確認してみるというのはいかがでしょう。

不断不断 2004/11/04 20:02 というわけで、さっそく logger_level を 2 に変更し、
昨晩から約1日しばらく様子を見ているのですが、先日の
「ウェブブラウザで <http://localhost:8080/> にアク
セスしても UI が表示されない(ことがある)」問題が再
現しなくなってしまいました…。

# それはそれで嬉しいことなのですが(苦笑)

状況に変化があれば、また報告させて頂きます。

amatubuamatubu 2004/11/04 20:26 不思議ですね。とりあえず、うまくいったということで、よし、ですかね。
またなにかあれば教えてください。

 | 
468871