SQLite Managerを試す

2008/03/11 | SQLite

いったんダメ出ししたSQLite Managerだったが、他に有用そうな管理ツールも見当たらなかったので、結局これを試すことにした。前回は希望通りに動いてくれなかったのだが・・・どうやら設定方法に問題があったようだ。設置方法をメモしておくことにする。

(1)ファイルのダウンロード
SourceForgeからファイルをダウンロードして解凍しておく。

(2)ウェブサーバにアップロード
解凍したファイルをアップロードする。SQLite ManagerはPHPで作られたウェブベースの管理ツールなので、ウェブからアクセスできるところに設置することが必要。

(3)パーミッション設定その1
SQLite Managerは自身でもSQLiteを使用している(設定内容等を保存)。よって内部で使用しているSQLiteデータベースファイルのパーミッションを設定する必要がある。
chmod 666 include/config.db
chmod 666 include/config3.db

(4)パーミッション設定その2
(3)だけでいいと思っていたら、どうもその上位のディレクトリも権限設定しておく必要があるようだ。
chmod 777 include/

(5)パーミッション設定その3
新しくデータベースを作成する場所もパーミッション設定が必要になる。たとえば../dir4db/にデータベースを作成したい場合は以下のように・・・。
chmod 777 ../dir4db/

これで設定は完了。あらためてブラウザからSQLite Managerにアクセスする。この状態で新規データベースを作成してみる。データベース作成の際には2箇所の入力が必要。

名前:管理用で使う名前(多分適当に何でもいい)
パス:実際に作成するデータベースのパス

たとえば名前は「testdb」パスは「../dir4db/testdb.sqlite」などと指定する。ちなみにバージョンは2と3を選択できるがここで注意が必要。素のPHP5ではバージョン2のデータベースしか扱うことができない。だからsqlite_open等の関数を使って処理したい場合はバージョン2を選んでおく必要がある。ちなみにバージョン3で作ってしまうと、以下のようなエラーが出てデータベースに接続することができない。

Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database

最後に「保存」ボタンをクリックすれば、データベースの作成は無事完了。ようやくSQLiteをまともに使うことができるようになった。使ってみるとこのSQLite Manager、なかなかよさげな感じ。とりあえず満足したので、これでいくことにした。最初からちゃんとマニュアルを読んで設置すべきだった・・・。

お手軽?簡単?データベースSQLite

2008/03/10 | SQLite

今まで必要性に迫られなかったが、ようやく使う機会が訪れた。
データベースSQLite。データベースといっても、サーバDaemonが動いているわけではなく、ファイルにデータを書き込んで保存し、そのファイルに対するアクセスをSQL文を使っておこなうためのライブラリ、とでも言ったほうがわかりやすいだろう。つまりSQLiteは特別なソフトではなく、PHPでファイルをSQL文を使って処理するための関数群と思ったほうがいいかもしれない(実際はぜんぜん違うけど、そう思っておいてなんら差し支えない)。

PHPからSQLiteを扱うのは簡単だ。以下の一行でデータベースへのコネクションを確立して、あとはSQL文を発行するだけ。

$db=sqlite_open(‘mysqlitedb’);

ここでmysqlitedbはデータベース名のようだが、これは単なるファイル名となる。つまりファイルを指定するだけでいいので、ファイル操作のfopenと同様と思っていい。戻り値の$dbはデータベースへのコネクションIDということになり、これに対してSQL発行のメンバ関数を与えていくことになる。

少し試してみたのだが・・・。今まで試したところ、管理ツールがどれもいまいち。何も考えずに簡単に希望通りに動いてくれる管理ツールが見当たらないのだ。MySQLにしてもPostgreSQLにしてもphp**Adminが便利に使えるし、SQLiteにも同様のものがあるのだが、今のところ自分の環境では動いてくれなかった。そのほかの管理ツールもどうもイマイチだ。直感的でない。マニュアルを見なくてもそこそこ動いてくれるようでないと・・・。
ちなみに以下のような管理ツールがあるようだ。

SQLiteManager
phpSQLiteAdmin
rktSQLite

全部試したのだけれど・・・どれも満足できない。早めにイケテル管理ツールを探さないと業務に支障が・・・。

ちなみにシステム構築で、素でsqlite_openなんて書くことはない。汎用なデータベース接続ライブラリを使うからだ。PHP5は嫌だなぁ、とか思ってたけど、世の流れに沿って、結局どっぷりとPHP5に浸かっている上体に気がついた。

PostgreSQLの状態を知る

2007/12/18 | PostgreSQL

とあるクライアントから「データベースのソート結果が変なんだけど」という連絡をいただいた。自分が構築したシステムではないので完全にお気楽モードで調べて差し上げることにした。データベースはPostgreSQL、プログラム言語はPHP。他人が作ったデータベースを触るのは基本的に嫌だが、それでも頼っていただける、というのはありがたい。ということで・・・。
まずはプログラムのバグを疑った。しかし、それらしい問題というのは見当たらない。SQL出力を確かめたり、取得したデータを確かめたり。しかしいずれも整合性が取れている(整合性が取れているにもかかわらず、データの並びがおかしいとはこれ如何に)。
データベースのダンプも預かっていたので、画面に出力させたSQLを自分の環境でも実行してみた。

ん?、ん?、ん???。

先方のサーバと自分のサーバで表示される順番が違う???。なぜ???。
バージョンもほとんど同じなのだからこんなことないはずなのに、と思ったら思いついた点がひとつ。ロケール(locale)の設定だ。データベースで日本語を使用する場合はロケール設定を無効(というかCを指定)にしなければいけない、とかなんとかいう設定があったはず。

で、現在の状態を調べるにはどうすればよいのか調べてみた。
pg_controldata /var/lib/pgsql/data/

このコマンドでいろいろわかる!。ちなみに引数ではデータの場所を指定する。結果として、表示される値のうち「LC_CTYPE:」の値が「C」ではなかった。どうやら、データベースの初期化をきっちりやっていないことが原因らしい。「忘れた」のか「知らなかった」のかわからないけど、クライアントにはいちおう状態を説明。どんな反応をされるのか・・・。少しクライアントがかわいそう。構築した業者さん・・・ハズレだったんだなぁ。

想定外の文字にマッチしてしまう

2006/12/03 | MySQL

mysqlで用語集を作ってみたのだが、ちょっとした問題がでた。
この仕組みでは読み仮名を登録するようにしてあるのだが、五十音で整理したいため、読み仮名の最初の文字を取り出して別カラムで格納している(例えば「ガチョウ」という単語があった場合は、そのままでは「ガ」になってしまうが、ちょっと処理をして「カ」を取り出している)。
ここで問題。「ツ」という文字を検索するときに「ツ」で検索して表示されるのはもちろんだが「テ」で検索しても表示されてしまう。また「ル」という文字を検索するときに「ト」で検索しても表示されてしまう。なぜ?、なぜ?。
理由を突き詰めなかったが、なんとなく想像がついたのでカラムをbinaryとして保存するよう変更した。これで解決。
きっと少し考えれば理由もわかるとは思うがあえて調べない(面倒だし、理由を知らなくても直感でわかることだから)。でももし親切に教えてくれる人がいらっしゃるようでしたら、コメントに残してください。

テキストファイルのSQLを実行

2006/10/03 | MySQL

MySQLの備忘録。ファイルに保存されたSQL文を実行するためのコマンド。
シェルから実行する場合は以下のコマンドを実行。
# mysql database < text_file

mysqlを実行中の場合は以下のコマンドを実行。
> source filename;


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net