投稿者 メッセージ
<  PHPプログラミング  ~  SQLite の主キー列の取得方法
yama
投稿1時間: 土 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 でテーブルの主キー列を取得するには、どのようにしたらよいでしょうか。
ご存知でしたら、どうぞご教授お願い致します。
トップに移動
ユーザー情報を表示 メッセージを送信
ach
投稿1時間: 日 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
トップに移動
ach
投稿1時間: 日 10月 16, 2005 10:02 pm  引用
ゲスト





ちょっと言葉足らずでした

PEAR:Very HappyBのSQLite::tableInfoは上で書いたpragmaを使っています(注:tableInfoの引数は文字列だけ)。
で、うちの環境PHP5.05 or SQLite2.8.16ではうまいことこのコマンド(?)が動きます。
ですから別のところでエラーが起きてるんじゃないかなぁと(もしくは引数に結果セットを渡してる)

DBのソースだけでも結構でかいのでエラーを追いかけるのは難しいですが、地道にvar_dumpとかを仕掛けていけばそのうち原因が分かるんじゃないでしょうか
トップに移動
yama
投稿1時間: 日 10月 16, 2005 10:27 pm  引用



登録日: 2005年10月 15日
投稿記事: 4

SQLite でも tableInfo が使えました!!

引き数に結果セットを入れていましたところを、対象のテーブル名に変更したところ、
正常にテーブル情報を取得できました。
(MySQLでは、結果セットでも、テーブル名でも取得できるようですね)

achさん、ありがとうございました!!
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.