2016-08-29 4 views
0

私は現在、DBレベルpostgresの際に大文字で作成見つからない

1)作成されたスキーマで問題に直面し、Postgresの9.2.xx OpenJPAの&を使用してアプリケーションを作成しようとしていますが言うPCM: -

CREATE SCHEMA PCM 

2)は、テーブルを作成しようとしました: -

CREATE TABLE PCM.USER_PROFILE (
USER_PROFILE_ID BIGINT NOT NULL, 
USER_FNAME VARCHAR(60), 
USER_LNAME VARCHAR(60) 
}; 

ガットエラー "PCM" スキーマが存在しません

私は、スキーマリスト場合

CREATE TABLE "PCM.USER_PROFILE" (
USER_PROFILE_ID BIGINT NOT NULL, 
USER_FNAME VARCHAR(60), 
USER_LNAME VARCHAR(60) 
}; 

表 、成功作成され: - - が:

は、テーブル作成を試みた

[[email protected] ~] $ psql -c "\dn" 

    List of schemas 
    Name | Owner 
--------+---------- 
pcm | dbadmin 
public | postgres 

B)persistence.xmlでは、私が入力した設定を

<property name="openjpa.jdbc.Schema" value="PCM" /> 

OpenJPAでスキーマが存在しないという問題が発生しました。

私はhereを参照のうえしようとしたが、ない成功。

私は'\"PCM\"', "\"PCM\"", '\"pcm\"', "\"pcm\""ような構成でスキーマ名を入力しようとしています。

どこが間違っているのかわかりません。

私は提案/助けが必要です 1)Postgres &でスキーマを作成するための適切な標準は、どのようにテーブルを作成するかを参照してください。

2)persistence.xmlのエントリは正しいですか?そして、なぜそのない暗黙的に小文字に変換されている引用符で囲まれていないときのPostgresのスキーマ

+0

https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERSミスエラー変更について補正するため –

答えて

1

オブジェクト名を特定します。

"PCM.USER_PROFILE"に二重引用符を付けてテーブルを作成すると、"PCM.USER_PROFILE"という名前のデフォルトのpublicスキーマにテーブルが作成されます。

CREATE TABLE "PCM.USER_PROFILE" (
    USER_PROFILE_ID BIGINT NOT NULL, 
    USER_FNAME VARCHAR(60), 
    USER_LNAME VARCHAR(60) 
); 

しかし、記事で言及したあなたのcreate文は、コマンドの最後に)}を変更した以外は(完全に有効である:それは正常user_profileテーブルの下pcmスキーマを作成

CREATE TABLE PCM.USER_PROFILE (
    USER_PROFILE_ID BIGINT NOT NULL, 
    USER_FNAME VARCHAR(60), 
    USER_LNAME VARCHAR(60) 
); 

+0

感謝}に)。今度は、テーブルCREATE TABLE PCM.USER_PROFILEを作成しようとしました( USER_PROFILE_ID BIGINT NOT NULL、 USER_FNAME VARCHAR(60)、 USER_LNAME VARCHAR(60) );エラー:スキーマ "pcm"が存在しません – Kiran

+0

私はあなたの作成ステートメントに従って、それはすべて私のために正常に動作します。あなたのスキーマは存在しますか?これらのクエリを 'psql'から直接実行していますか? –

+0

カミルGありがとう、ええ、私はその点を逃していた。申し訳ありませんが最新のコメントが表示されませんでした。 – Kiran

0

私が行ったエラーは、データベース環境&のデータベース環境外で作成されたスキーマでした。実行を試みたとき両方のユーザーの下で3210(ルート& dbユーザー)スキーマが一覧表示されませんでした。

したがってスキーマはデータベース&のdbownerユーザ下で正常にロードされているかどうかをテストするために、クエリを実行してみクエリ

psql -U [dbUser] -d [database] -c "CREATE SCHEMA pcm;" 

又は

psql -h localhost -U [dbUser] -d [database] 
[database]#=> CREATE SCHEMA pcm; 

を実行して、DB下でスキーマを作成します。

[database]#=> select * from information_schema.schemata; 
関連する問題