2017-11-09 10 views
0

Google App Engine 및 Cloud SQL을 사용하여 애플리케이션을 실행하고 있습니다.Cloud SQL에서 Knex 마이그레이션 실행

로컬 환경 및 환경을 각각 설정하고 해당 환경을 설정했습니다. 지금은 Knex 마이그레이션 CLI를 사용하여 로컬 환경에서 일부 마이그레이션을 설정하고 모든 것이 로컬에서 잘 작동합니다.

gcloud app deploy을 수행 한 후 (또는 이전에) 이러한 마이그레이션 (및 시드)을 실행하는 방법은 무엇입니까? 어쨌든 클라우드 쉘 내에서 내 프로젝트 파일에 액세스 할 수는 없습니다.

무엇이 누락 되었습니까?

+0

나는'prestart' (''prestart ":"./node_modules/.bin/knex migrate : latest && ./node_modules/.bin/knex seed : run ",')를 사용하여 마이그레이션을 시도했다. 'googleapi : Error 409 : 인스턴스 또는 연산이 요청을 처리 할 수있는 적절한 상태가 아닙니다. invalidState' – pmilla1606

답변

0

npm start에서 서버를 시작하기 전에 항상 마이그레이션을 실행합니다. Prestart는 시스템이 수행하는 것과 동일한 방식으로 작동해야합니다 (package.json start에서 호출되는 별도의 시작 셸 스크립트가 있음).

Cloud SQL 연결을 올바르게 설정하고 실제로 DB 연결을 테스트 했습니까? 앱 엔진 인스턴스에서 실행중인 Cloud SQL 프록시 컨테이너의 로그를 확인합니다.

당신은 애플 리케이션 엔진 인스턴스에 SSH 연결을 열어 그것을 할 프록시 컨테이너에서 로그를 확인할 수 있습니다

sudo docker ps --no-trunc 
sudo docker logs stoic_heisenberg 

내 SQL 프록시 컨테이너가 호출 stoic_heisenberg을. 또한 유닉스 소켓이 gaeapp 컨테이너에 만들어 졌는지 확인해야합니다.

입력 컨테이너 당신은 어떤 파일이없는 경우, SQL이 제대로 설치되지 클라우드

container_exec gaeapp /bin/bash 
ls -la /cloudsql 

을 할 수 있습니다.

+0

고맙습니다.'prestart' (또는 package.json의 스크립트)가 트릭을해야합니다. . 나는 이것이 문제가있는 곳이라고 상상하지만 SQL을 클라우드에 연결 (그리고 프론트 엔드에서 성공적으로 쿼리를 만들었다)했다. GCP와 DB에 대한 나의 경험이 전반적으로 향상되고 있습니다. 이 질문에 대한 답변으로이 사실을 수락합니다. – pmilla1606