投稿者 |
メッセージ |
|
< PHPプログラミング ~ SQLite の主キー列の取得方法 |
|
時間:
土 10月 15, 2005 7:54 pm
|
|
|
登録日: 2005年10月 15日
投稿記事: 4
|
|
みなさん、はじめまして。
SQLite の質問があり、書き込みさせて頂いております。
現在、SQLite 上に作成したテーブルの主キー列を取得しようとしております。
主キー列は、PEAR DB の tableInfo() コマンドを使用すればわかると思うのですが、
SQLite で tableInfo() コマンドを使用したら、DB_Error Object が帰ってきました。
エラーメッセージは以下です。
DB Error: DB backend not capable
DBの終端が不正、ということでしょうか。
同じプログラムを MySQL で走らせた場合、正常にテーブル情報が取得できましたので、
プログラムが悪いわけではないと思います。
SQLite でテーブルの主キー列を取得するには、どのようにしたらよいでしょうか。
ご存知でしたら、どうぞご教授お願い致します。 |
|
|
|
|
|
|
|
時間:
日 10月 16, 2005 9:29 pm
|
|
|
|
流し読みしただけなのではっきりとはいえませんが、sqliteのtableInfoはそんなエラーは返さない気がします。
参考までにSQLiteの主キーの見つけ方ですが
PRAGMA table_info(table-name);
の結果セットのうちpkカラムが1のものです。
Code: |
sqlite> create table test(id primary key,hoge);
sqlite> pragma table_info(test);
cid = 0
name = id
type = numeric
notnull = 0
dflt_value =
pk = 1
cid = 1
name = hoge
type = numeric
notnull = 0
dflt_value =
pk = 0
|
|
|
|
|
|
|
|
|
時間:
日 10月 16, 2005 10:02 pm
|
|
|
|
ちょっと言葉足らずでした
PEAR:BのSQLite::tableInfoは上で書いたpragmaを使っています(注:tableInfoの引数は文字列だけ)。
で、うちの環境PHP5.05 or SQLite2.8.16ではうまいことこのコマンド(?)が動きます。
ですから別のところでエラーが起きてるんじゃないかなぁと(もしくは引数に結果セットを渡してる)
DBのソースだけでも結構でかいのでエラーを追いかけるのは難しいですが、地道にvar_dumpとかを仕掛けていけばそのうち原因が分かるんじゃないでしょうか |
|
|
|
|
|
|
|
時間:
日 10月 16, 2005 10:27 pm
|
|
|
登録日: 2005年10月 15日
投稿記事: 4
|
|
SQLite でも tableInfo が使えました!!
引き数に結果セットを入れていましたところを、対象のテーブル名に変更したところ、
正常にテーブル情報を取得できました。
(MySQLでは、結果セットでも、テーブル名でも取得できるようですね)
achさん、ありがとうございました!! |
|
|
|
|
|
|
|