2012-03-05 1 views
0

異なるセッションで未定義の関係の問題:表 - 私の目標のPostgreSQLデータベースでSQLWorkbenchを使用して文を作成し、私は次のことを実行している

CREATE TABLE Config ( 
    id serial PRIMARY KEY,  
    pub_ip_range_low varchar(100),  
    pub_ip_range_high varchar(100)    
); 

右の表を作成した後、私は選択*」と入力し、テーブルのコンテンツを要求しますfrom config; 'そのテーブルが取得できることを確認します。それにもかかわらず、JDBCタイプ4ドライバを使用する私のJavaプログラムは、同じSELECT文を発行するとテーブルにアクセスできません。プログラムがconfigテーブルの "未定義の関係"と書かれている情報にアクセスしようとすると、例外がスローされます。

私の質問は以下のとおりです。

    私は文を作成、実行前にいたsqlworkbenchがテーブルを認識するのはなぜ
  1. は私のJavaプログラムがそれを見つけることはできませんが?
  2. postgressql DBMSはどこで作成したテーブルを置くのですか?私はそれらを公にも情報スキーマにも見ません。

注:ターゲットのpostgresデータベースを確認しましたが、SQL Workbenchはクエリを実行できますが、どこでもConfigテーブルを参照できません。次に別のSQLワークベンチインスタンスを開き、テーブルを照会できない(つまり見つからない)ことに気付きました。したがって、私の結論は、PostgreSQLが、最初に実行したSQLBenchインスタンスで作成したテーブルを、そのセッションにバインドされた血なまぐさい場所に配置することです。別のSQL Workbenchのインスタンスまたはmy javaプログラムはセッションにバインドされていないため、以前に作成したテーブルの設定を照会することはできません。

+0

SQLWorkbench内でSELECT current_schema()を実行して、どのスキーマでテーブルを作成しているかを確認してください。また、どのスキーマを照会しているかをjavaで調べてみてください。あなたは取引を開いていますか? – DavidEG

+0

大文字小文字の大文字小文字の区別がないようにしてください。彼らは混乱につながる可能性があります。 – wildplasser

+0

上記のselect文はpublicを返します。私はJavaプログラムからpublic.configと入力してテーブルをクエリしようとしましたが、問題を解決するのに役立たなかった。とにかくありがとう/それ以上の提案? –

答えて

1

PostgreSQLのセッションローカルな唯一の「血まみれの場所」は、スキーマpg_temp、つまり一時テーブルです。しかし、CREATEコマンドにキーワードTEMP[ORARY]は表示されません。もちろん、トランザクションでコミットされていない限り、の誰もトランザクション外のものは誰にも見えません。

ホスト/データベース/ポート/またはスキーマsearch_pathのswitcherooが表示されている可能性があります。大文字と小文字が混在したテーブル名とのミックスアップも有力候補です。 "Config"を二重引用符で囲まないと、テーブルはシステム内ですべて小文字になりますので、configとなります。後で名前を二重引用符で囲むと、一致しません。 The manual has the details

+0

私はcreate databaseコマンドの後にコミットを発行しますが、助けにはなりませんでした。私はSQLワークベンチとJavaプログラムの両方でデータベースを小文字でクエリします。ありがとう。 –

0

余分な末尾のカンマで作成が失敗した可能性がありますか?

CREATE TABLE config (
    id serial PRIMARY KEY,  
    pub_ip_range_low varchar(100),  
    pub_ip_range_high varchar(100) -- >> ,   
); 
+0

'テーブルの作成直後に、 'select * from config;'と入力してテーブルの内容を要求します。そのテーブルが取り出されるのを見てください。」そう、恐らくそうではありません。 –

+0

私はここに貼り付けていたときに、特定の会社固有のフィールド名を作成ステートメントから削除しなければならなかったので、これらのフィールド名の削除によってコンマが残りましたが、元のcreateステートメントは正常であり、正常に実行されました。 –

+0

あなたの問題は少し気味悪いように見えるので、それは野生の推測でした。私たちの何人か(アーウィンと私自身を含む)は、コンマを行頭に置く習慣があります。そのため、より見やすくなり、編集が少し楽になります。 – wildplasser

関連する問題