• 締切済み

postgreSQLのエラー表示について

質問させて頂きます。 初めてpostgreSQLをさわっている初心者なのですが、 今まで、あるグループウェアをりようして、サーバに WEBベースで接続し、情報を表示したり、データベースの内容を登録・削除したりしていたのですが、ある時からブラウザに エラーメッセージしか表示されなくなりました。 そのエラーメッセージは以下の通りです。 Invalid SQL: SELECT c.cab_dept_code as dept_code, c.cab_category_id as folder_code, c.cab_category_name as folder_name, f.fullpath_name as dept_fullname, dept2fulldept_pad(f.dept_code) as dept_fullcode, cab_cate_fullpath(c.cab_dept_code, c.cab_category_id) as folder_fullcode, c2.take_cat_id FROM dept_fullpath f LEFT OUTER JOIN cab_category c ON (c.cab_dept_code = f.dept_code) LEFT OUTER JOIN (SELECT t.cab_dept_code, take_cat_id(t.cab_dept_code,'hashi') AS take_cat_id FROM (SELECT DISTINCT cab_dept_code FROM cab_category) t ) c2 ON (c.cab_dept_code = c2.cab_dept_code) ORDER BY dept_fullcode, folder_fullcode PostgreSQL Error: 1 (ERROR: function cab_cate_fullpath(bigint, bigint) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.) Session halted. 長々と書いてすいません。重要な部分が分からないので一応全文のせました。 このエラーメッセージはどういう意味なのでしょうか? 自分なりに調べてみたのですが、いまいちよく分かりません。 また、エラーの解決方法などが分かる方がいらっしゃれば教えて頂けないでしょうか? よろしくお願いします。

みんなの回答

  • med2dic
  • ベストアンサー率77% (21/27)
回答No.1

似たようなエラーになったことがあるので参考程度に回答します。 エラーは関数cab_cate_fullpathがないか、その関数の引数の型が一致しないといった内容です。 cab_cate_fullpathの引数はbigint型なので"c.cab_dept_code"と"c.cab_category_id"の値(数値であるかどうか)を確認してください。 PostgreSQLのバージョンを上げましたか? ver8.3以上に上げている場合は仕様変更により暗黙の型変換がなくなっています。 詳しくは参考URLを参照してください。

参考URL:
http://lets.postgresql.jp/documents/tutorial/cast/
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Postgresqlの自己結合について

    first_table f_id f_name 1 鈴木 2 田中 3 佐藤 last_table l_id l_name 1 一郎 1 二郎 2 太郎 3 次郎 欲しい結果 id f_name l_name1 l_name2 1 鈴木 一郎 二朗 2 田中 太郎 (空白もしくはNULL) 3 佐藤 次郎 (空白もしくはNULL) PHP4.3.2とPostgresql7.4.29の環境です。 first_tableとlast_tableの2つのテーブルがあって、 欲しい結果のような表を作成したいです。 l_name1やl_name2でのキーワード検索も行いたいので、1つのSQL文を発行したいのですが、 どのように書けば良いのでしょうか? last_tableを自己結合し、first_tableと結合するのが近い気がするのですが。 SELECT * FROM first_table AS f INNER JOIN ( SELECT l1.l_id, l1.l_name AS l_name1, l2.l_name AS l_name2 FROM l_table AS l1, l_table AS l2 WHERE l1.l_name > l2.l_name AND l1.l_id = l2.l_id ) AS l ON f.f_id=l.l_id よろしくお願いします。

  • php selectbox hidden

    formでselectboxを作っています。 入力画面→確認画面→DB登録という流れになっており、 selectboxもDB内からひっぱりforeachで回しています。 入力画面 <select name="cat" id="cat" class="postform"> <option value="0">-- 選択してください --</option> <?php foreach ($categories as $category) { echo '<option value="' .$category->term_id. '">' .$category->cat_name. '</option>'."\n"; } </select> のようにしています。 DBの接続は省かせていただきます。 確認画面 echo $_POST['cat']; としていますが、このままだとvalueの値のみ($category->cat_nameのid)が表示されます。 確認画面では$category->cat_nameと表示され登録時には$category->term_idとしたいです。 どなたかおわかりの方がいらっしゃいましたらよろしくお願いします。

    • 締切済み
    • PHP
  • MySQL 条件での絞込みがうまくいきません

    下記の質問をさせていただき、解決いたしましたが、それに関連して新たなご質問です。 http://okwave.jp/qa/q8830319.html 上記質問内容は、 以下のようなデータから、「結果」のような形でデータを取り出したいというもので、「いただいたご回答」の形で一旦解決しました。 usr テーブル +--------+------+ | usr_id | name | +--------+------+ | 1 | 太郎 | | 2 | 二郎 | | 3 | 花子 | +--------+------+ usr_trm テーブル +--------+--------+ | usr_id | trm_id | +--------+--------+ | 1 | 1 | | 1 | 3 | | 1 | 4 | | 2 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 2 | +--------+--------+ cat テーブル +--------+------+ | cat_id | name | +--------+------+ | 1 | 性別 | | 2 | 部署 | +--------+------+ trm テーブル +--------+--------+------+ | trm_id | cat_id | name | +--------+--------+------+ | 1 | 1 | 男性 | | 2 | 1 | 女性 | | 3 | 2 | 総務 | | 4 | 2 | 経理 | +--------+--------+------+ 結果 +--------+------+------+------+ | usr_id | name | cat1 | cat2 | +--------+------+------+------+ | 1 | 太郎 | 1 | 3,4 | | 2 | 二郎 | 1,2 | 3 | | 3 | 花子 | 2 |   | +--------+------+----- +------+ いただいたご回答 select t1.usr_id,t3.name ,group_concat(if(cat_id=1,t1.trm_id,null)) as cat1 ,group_concat(if(cat_id=2,t1.trm_id,null)) as cat2 from usr_trm as t1 inner join trm as t2 on t1.trm_id=t2.trm_id inner join usr as t3 on t1.usr_id=t3.usr_id group by usr_id さらにそこから、例えば「総務に所属する人をランダムにn件」という形で絞り込もうと思い、 WHERE t2.trm_id=3 と ORDER BY RAND() LIMIT 10 を追加したところ、条件通り抽出はされるのですが、結果の「cat1」「cat2」に他のカテゴリーの値が入らなくなりました。 WHERE t2.trm_id=3 を消すと「cat1」と「cat2」に値が入ってきます。 「cat1」と「cat2」に全ての値が入った状態で絞込をするために、どのようにすればよいかわかりません。 アドバイスをいただけると幸いです。

    • ベストアンサー
    • MySQL
  • テキストファイルへの書き出し

    ExcelVBAについて教えてください。 Dim path As String Dim FullPath As String Path ="C:\" Dim FN As String FN ="abc.txt" Dim intFF As Integer intFF = FreeFile FullPath = Path & "\" & FN Open FullPath For Output As #intFF Print #intFF, FullPath Close #intFF とやると、Open FullPathのところで、実行時エラー 76、パスが見つかりませんと表示されてしまいます。 やりたいことは、Excel VBAでテキストファイルを新規につくり、そこへ書き出し、保存したいです。ファイル名はFullPathで指定したファイル名を新規で作り出し、それに対して書き出し、保存をしたいです。 何が間違っているのでこのようなエラーが表示されてしまうのでしょうか?回避方法がありましたらご教授お願いいたします。

  • WinCDRでエラーレポート

    音楽ファイルを焼こうとすると下記の様なエラーメッセージが出ます。 「CDレコーダでエラーが発生しました CDレコーダから以下のエラーレポートデータを受け取りました Check status, sense data is valid Medium error Write Error Sense Key [03] Additional Sense Code [0C] Additional Sense Code Qualifier [00] f0 00 03 00 00 bd 6f 0c : ......o. 00 00 00 00 0c 00 : ...... 2a 00 00 00 b6 a1 00 00 : *....... 1b 00 : .. #2875 <MATSHITA UJDA340 1.50 (HBA:1 ID:0 ATAPI)>」 これだけで原因がわかりますでしょうか? ライティングソフトか?CDRWドライブか? メディアか?何が原因なのでしょうか? 音楽ファイルを焼く時には必ずエラーになります。

  • システムエラーの中身

    電源を入れ起動中に「システムは深刻なエラーから回復しました。」と表示が2日間出ました。 それ以降は出てこないので問題ないかと思っているのですが、気になるので以下の内容で何が起きていたのか予測できる方がいらっしゃいましたら教えてください。 ================================ イベントの種類: エラー イベント ソース: System Error イベント カテゴリ: (102) イベント ID: 1003 日付: 2005/10/02 時刻: 9:51:42 ユーザー: N/A コンピュータ: COMPUTERNAME 説明: エラー コード 1000007f、パラメータ1 00000008、パラメータ2 80042000, パラメータ3 00000000、パラメータ4 00000000. 詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。 データ: 0000: 53 79 73 74 65 6d 20 45 System E 0008: 72 72 6f 72 20 20 45 72 rror Er 0010: 72 6f 72 20 63 6f 64 65 ror code- 0018: 20 31 30 30 30 30 30 37 1000007 0020: 66 20 20 50 61 72 61 6d f Param 0028: 65 74 65 72 73 20 30 30 eters 00 0030: 30 30 30 30 30 38 2c 20 000008, 0038: 38 30 30 34 32 30 30 30 80042000 0040: 2c 20 30 30 30 30 30 30 , 000000 0048: 30 30 2c 20 30 30 30 30 00, 0000 0050: 30 30 30 30 0000

  • 2つのSQL文で結果に差違が発生する

    私の知識ではお手上げのため、ご教授願いたいのですが、 下記のようなテーブルが仮にあったとして、レコードがそれぞれいくつか入っています。 【itemsテーブル】   id・・・・・連番   cat_id・・・category.id   price ・・・価格   max_num ・・セット数   date・・・・発売日 【categioryテーブル】   id・・・・・連番   cat_name・・カテゴリ名 【orderテーブル】   id・・・・・連番   item_id ・・items.id   paid_price・支払価格 以下の2つのSQL文を実行させた場合、「total_price」の値に違いは発生しますか? 【SQL文 A】----------------------------- SELECT items.cat_id, `category`.`cat_name`, SUM(`items`.`price` * `items`.`max_num`) AS `total_price`, SUM(IF(`order`.`paid_price` > 0, `order`.`paid_price`, 0)) AS `total_paid`, SUM(IF(`order`.`paid_price` = 0 , `items`.`price`, 0)) AS `not_payment` FROM `items` INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`) INNER JOIN `order` ON (`items`.`id` = `order`.`item_id`) WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511 GROUP BY `items`.`cat_id` ORDER BY `items`.`cat_id` ASC ------------------------------------ 【SQL文 B】----------------------------- SELECT items.cat_id, `category`.`cat_name`, SUM(`items`.`price` * `items`.`max_num`) AS `total_price` FROM `items` INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`) WHERE AND DATE_FORMAT(`items`.`date`, '%Y%m') = 201511 GROUP BY `items`.`cat_id` ORDER BY `items`.`cat_id` ASC ------------------------------------ こちらで上記と同じようなSQL文を実行すると、Bで出てほしい値がAでは出てこないのです。 Aの場合は「WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511」が抽出条件として実行されていないような感じです。 すべてのレコードの「SUM(`items`.`price` * `items`.`max_num`) AS `total_price`」が計算されています。 Bだけで実行すればちゃんとほしい値が返ってきます。 何か間違っていますか?

    • ベストアンサー
    • MySQL
  • アクセスのインポートエラー 続き

    先ほど、質問しました続きです。以下のVBAを作成しましたが、うまくいきません。助言お願いします。 Option Compare Database Private Sub 実行_Click() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim strName As String Dim i As Long strName = "エラー" i = 0 Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection For Each tbl In cat.Tables If tbl.Name = strName Then i = 1 If MsgBox(tbl.Name & "テーブルを削除しますか?", _ vbYesNo) = vbYes Then cat.Tables.Delete tbl.Name MsgBox tbl.Name & "テーブルの削除を完了しました。" End If Next tbl If i <> 1 Then MsgBox strName & "テーブルが存在しません。" Set cat = Nothing End Sub

  • MySQL この場合どう書けばよいでしょうか?

    以下のようなデータがあります。 このデータから最後の「結果」のような形でデータを取り出したい場合、どのようにすればよいでしょうか? cat1とcat2を分けない形はgroup_concatを使ってできたのですが、カテゴリーごとに分けて取得したいです。 usr テーブル +--------+------+ | usr_id | name | +--------+------+ | 1 | 太郎 | | 2 | 二郎 | | 3 | 花子 | +--------+------+ usr_trm テーブル +--------+--------+ | usr_id | trm_id | +--------+--------+ | 1 | 1 | | 1 | 3 | | 1 | 4 | | 2 | 1 | | 2 | 2 | | 2 | 3 | | 3 | 2 | +--------+--------+ cat テーブル +--------+------+ | cat_id | name | +--------+------+ | 1 | 性別 | | 2 | 部署 | +--------+------+ trm テーブル +--------+--------+------+ | trm_id | cat_id | name | +--------+--------+------+ | 1 | 1 | 男性 | | 2 | 1 | 女性 | | 3 | 2 | 総務 | | 4 | 2 | 経理 | +--------+--------+------+ 結果 +--------+------+------+------+ | usr_id | name | cat1 | cat2 | +--------+------+------+------+ | 1 | 太郎 | 1 | 3,4 | | 2 | 二郎 | 1,2 | 3 | | 3 | 花子 | 2 |   | +--------+------+----- +------+

    • ベストアンサー
    • MySQL
  • エラーの意味がわかりません

    PIC16f877のプログラム(C言語)をデバックしてたら、 こんなエラーが出てきました。 : : Can't find 0x2F words (0x2F withtotal) for psect text0 in segment CODE (error) : : Can't find 0xE words (0xE withtotal) for psect text3 in segment CODE (error) : : Can't find 0x8 words (0x8 withtotal) for psect text7 in segment CODE (error) Exit status = 1 (error) 私にはどこがどんなエラーなのかまったく理解できません。もしわかる方がいらしたら教えてください。