私の問題がScala Play 2.5.x FrameworkまたはPostgreSQLに接続しているかどうかは分かりませんので、セットアップについて説明します。PostgreSQLを使用するScala Playプロジェクトで 'public'スキーマをデフォルトにするには?
私はBigSQL SandboxesからScalaとPostgreSQL 9.5.4-2でPlay 2.5.6を使用しています。私は、Play Frameworkのデフォルトの進化パッケージを使用してDBのバージョンを管理しています。
私はBigSQL Sandboxの新しいデータベースを作成しました.PGSQLとPGSQLは、publicというデフォルトのスキーマを作成しました。私は開発のためにこのスキーマを使用します。
私は、次のスクリプト(DB進化configに1.sql
)でテーブルを作成したいと思います:私はこのようなコードを使用してテーブルを読みたいもののほか
# Initialize the database
# --- !Ups
CREATE TABLE user (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL,
creation_date TIMESTAMP NOT NULL
);
# --- !Downs
DROP TABLE user;
:
val resultSet = statement.executeQuery("SELECT id, name, email FROM public.user WHERE id=" + id.toString)
上記のコードを実行したい場合や、pgadminでCREATE TABLE...
コードを使用している場合でもエラーが発生します。問題はuser
テーブル名にあります。プレフィックスにpublic
(つまりpublic.user
)を付けるとすべて正常に動作します。
私の質問は以下のとおりです。
- それはスキーマ名ごとに時間を持つテーブル名の前に付けるために正常ですか?私にとっては奇妙に思える。
public
スキーマをデフォルトのオプションにすることで、テーブル名を修飾する必要はありません。 (例えば。正しくALTER database "my_database" SET search_path TO my_schema;
search_path
:私は私のデータベースのsearch_path
を設定ALTER USER my_user SET search_path to public;
- :
- は、私は私のユーザーのために
search_path
を設定します。CREATE TABLE user (...);
は、私は、次の試してみました)エラーをスローしません。これを示します:
"$user",public
- は、私は私のユーザーのために
p.a.d.e.DefaultEvolutionsApi - ERROR: syntax error at or near "user"
:
プレイで- :
ERROR:構文でエラーまたは近くに "ユーザー"
LINE 1:CREATE TABLEのユーザー(
は、私は次のエラーを得ました
********** **********エラー
ERROR:構文エラーまたはその付近 "ユーザー"
SQL状態:42601
文字:14
解決策でした。ありがとうございました!私はエラーメッセージがこの場合には本当に役に立たなかったと感じています。ちなみに、私はGoogleでこれを見つけられなかった理由を調べるために短い調査をしました。私は、 "create table user"というフェーズで検索していたはずです。そうすれば、私はあなたの他の答えを見つけることができました:http://stackoverflow.com/questions/22256124/cannot-create-a-database-table-named-user-in-postgresql :)私は "user_account"という名前で行きました。 –