2013-12-22 7 views
2

내 응용 프로그램은 여러 데이터베이스가 아닌 Postgresql의 스키마를 사용하므로 각 환경마다 자체 스키마가 있습니다. 즉, production, developmenttest 스키마를 가진 하나의 데이터베이스를 사용하고 있습니다. 이 데이터베이스에서 public 스키마를 삭제했습니다.스키마 마이그레이션을위한 비공개 스키마

내가 처음으로 마이그레이션을 만들었습니다,하지만 난 rake db:migrate을 실행할 때 나는에서 schema_search_path을 포함 시켰습니다

PG::InvalidSchemaName: ERROR: no schema has been selected to create in: CREATE TABLE "schema_migrations" ("version" character varying(255) NOT NULL) 

을 알리는 오류가 내 database.yml : 내 응용 프로그램의 ISN 이후

development: 
    adapter: postgresql 
    username: 
    password: 
    database: 
    host: localhost 
    port: 5433 
    schema_search_path: 'development' 

그것이 멀티 타임이 될 수있는 기능을 사용하지 않을 것이다. 나는 Apartment와 같은 큰 보석을 사용하고 싶지 않다. 내 스키마에서 rake db:migrate 명령을 사용할 수있는 방법이 있습니까?

+0

즉, search_path를 적절하게 설정해야합니다. Rails에서 어떻게 이루어 졌는지 모르겠지만 연결 후 간단한 쿼리를 통해 트릭을 수행해야합니다. –

+0

하하, 물론 그렇습니다.하지만 평범한'rake db : migrate' 작업으로 할 수 있는지 묻고 있습니다. 나는'database.yml' 이외의 마이그레이션을 위해 레일스에서'search_path'를 설정하는 방법을 모른다. – josh

+2

예를 들어 다음을 실행하여 검색 경로를 설정할 수 있습니다. 'search_path를 프로덕션, 공개 '로 설정하십시오. 후속 쿼리를 실행하기 전에 DB 쿼리에서. 그리고 설정 파일에서 검색 경로를 설정하면 작동하지만 마이그레이션을 실행할 때가 아니라면 틀림없이 레일에있는 버그입니다. –

답변

0

데이터베이스에 개발이라는 스키마가 없기 때문에.

+0

아니요, 문제가 아니며 이미 데이터베이스에 스키마를 만들었습니다. 필자는 이것이 Rails의 문제라고 생각하며 적어도 초기 테이블을 만들 때 테이블에 접두사를 추가하지 않는 문제였습니다. 나중에'set search_path for production, public'을 추가하면 작동 할 것입니다. – josh