내 응용 프로그램은 여러 데이터베이스가 아닌 Postgresql의 스키마를 사용하므로 각 환경마다 자체 스키마가 있습니다. 즉, production
, development
및 test
스키마를 가진 하나의 데이터베이스를 사용하고 있습니다. 이 데이터베이스에서 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
명령을 사용할 수있는 방법이 있습니까?
즉, search_path를 적절하게 설정해야합니다. Rails에서 어떻게 이루어 졌는지 모르겠지만 연결 후 간단한 쿼리를 통해 트릭을 수행해야합니다. –
하하, 물론 그렇습니다.하지만 평범한'rake db : migrate' 작업으로 할 수 있는지 묻고 있습니다. 나는'database.yml' 이외의 마이그레이션을 위해 레일스에서'search_path'를 설정하는 방법을 모른다. – josh
예를 들어 다음을 실행하여 검색 경로를 설정할 수 있습니다. 'search_path를 프로덕션, 공개 '로 설정하십시오. 후속 쿼리를 실행하기 전에 DB 쿼리에서. 그리고 설정 파일에서 검색 경로를 설정하면 작동하지만 마이그레이션을 실행할 때가 아니라면 틀림없이 레일에있는 버그입니다. –