【问题标题】:Running Knex Migrations in Cloud SQL在 Cloud SQL 中运行 Knex 迁移
【发布时间】:2017-11-10 04:27:01
【问题描述】:

我正在使用 Google App Engine 和 Cloud SQL 来运行应用程序。

我已成功设置本地和生产环境及其各自的数据库。刚才,我已经设法使用 Knex 迁移 CLI 在我的本地环境中设置了一些迁移,并且在本地一切正常。

在执行gcloud app deploy 之后(或之前?)如何运行这些迁移(和种子!)?我无论如何都看不到从云外壳中访问我的项目文件。

我错过了什么?

【问题讨论】:

  • 我尝试使用 prestart ("prestart": "./node_modules/.bin/knex migrate:latest && ./node_modules/.bin/knex seed:run",) 运行迁移,但导致以下错误:googleapi: Error 409: The instance or operation is not in an appropriate state to handle the request., invalidState

标签: node.js google-app-engine google-cloud-sql knex.js gcp


【解决方案1】:

我们每次在npm start 启动服务器之前都会运行迁移。 Prestart 的工作方式应该与我们的系统相同(我们有单独的 starter shell 脚本,从 package.json start 调用)。

您是否正确设置了 Cloud SQL 连接并测试了您是否确实有有效的数据库连接?检查来自在您的应用引擎实例中运行的 Cloud SQL 代理容器的日志。

您可以通过打开与应用引擎实例的 ssh 连接并检查来自代理容器的日志来做到这一点:

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

我的 sql 代理容器被称为 stoic_heisenberg。您还应该检查在gaeapp 容器中创建的unix 套接字是否正确。

进入容器你可以做

container_exec gaeapp /bin/bash
ls -la /cloudsql

如果没有文件,说明云sql设置不正确。

【讨论】:

  • 谢谢,所以prestart(或 package.json 中的任何脚本)应该可以解决问题。我确实建立了与云 SQL 的连接(并成功地从我的前端进行了查询),但我想这就是问题所在。总的来说,我对 GCP 和 DB 缺乏经验。接受它,因为它回答了我的问题。
猜你喜欢
  • 2021-08-27
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2015-11-11
  • 2016-11-02
  • 2017-12-21
相关资源
最近更新 更多