2016-08-30 2 views
0

스칼라 플레이 2.5.x 프레임 워크 또는 PostgreSQL에 연결하는 데 내 문제점이 있는지 잘 모르겠습니다. 따라서 설정을 설명하려고합니다.PostgreSQL을 사용하는 Scala Play 프로젝트에서 '공개'스키마를 기본으로 만드는 방법은 무엇입니까?

BigSQL Sandboxes에서 Scala와 PostgreSQL 9.5.4-2로 Play 2.5.6을 사용하고 있습니다. Play Framework 기본 진화 패키지를 사용하여 DB 버전을 관리합니다.

BigSQL Sandbox의 새 데이터베이스를 만들었습니다. PGSQL과 PGSQL은 public이라는 기본 스키마를 만들었습니다. 나는이 스키마를 개발 용으로 사용한다.

내가 (DB 진화 설정에서 1.sql) 다음과 같은 스크립트를 사용하여 테이블을 작성하고 싶습니다 :

val resultSet = statement.executeQuery("SELECT id, name, email FROM public.user WHERE id=" + id.toString) 
:이 같은 코드로 테이블을 읽고 싶습니다 게다가

# 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; 

언급 된 코드를 실행하고 싶거나 pgadmin에서 CREATE TABLE... 코드를 사용하더라도 오류가 발생했습니다. 문제는 user 테이블 이름입니다. 접두사를 접두어로 사용하면 public (즉, public.user) 모두 올바르게 작동합니다.

내 질문은 :

  1. 는 스키마 이름마다 시간에 테이블 이름을 접두사로 정상인가요? 나는 이상하게 보입니다.
  2. 테이블 이름을 한정 할 필요가 없도록 public 스키마를 기본 옵션으로 만들려면 어떻게해야합니까? (예 :제대로 ALTER database "my_database" SET search_path TO my_schema;
  3. search_path : 내 데이터베이스에 대한 search_path을 설정 ALTER USER my_user SET search_path to public;
  4. :
    1. 내가 내 사용자에 대한 search_path을 설정 CREATE TABLE user (...);

    나는 다음과 같은 시도) 오류가 발생하지 않습니다 이것을 보여줍니다 : "$user",public

pgadmin에서 p.a.d.e.DefaultEvolutionsApi - ERROR: syntax error at or near "user"
  • :

    플레이에서
    1. :

      오류 : 구문에서 오류 또는 근처 "사용자"

      LINE 1 : CREATE TABLE 사용자 (515,

      나는 다음과 같은 오류가있어

      ********** 오류 **********

      오류 : 구문에서 오류 또는 근처 "사용자"

      SQL 상태 : 42601

      문자 : 14

  • 답변

    2

    이 기본 스키마과는 아무 상관이 없습니다. user은 예약어입니다.

    당신은 이러한 테이블을 만들 수 있도록 큰 따옴표를 사용해야합니다 :

    CREATE TABLE "user" (
        id SERIAL PRIMARY KEY, 
        name TEXT NOT NULL, 
        email TEXT NOT NULL, 
        creation_date TIMESTAMP NOT NULL 
    ); 
    

    하지만 난 강력하게 그 일을하지 않는 것이 좋습니다 . 따옴표로 묶인 식별자가 필요없는 다른 이름을 찾습니다.

    +0

    해결책이었습니다. 고마워요! 이 경우 오류 메시지가 도움이되지 않는다고 생각합니다. 그건 그렇고, 나는 왜 내가 구글에서 이것을 발견하지 못했는지 알아보기 위해 짧은 연구를했다. 나는 "테이블 사용자 생성"단계로 검색해야했습니다. 그렇게하면 다른 답변을 찾을 수 있습니다. http://stackoverflow.com/questions/22256124/cannot-create-a-database-table-named-user-in-postgresql :) "user_account"이름을 사용했습니다. –

    관련 문제