当前位置: 首页 > 知识库问答 >
问题:

Google App Engine使用Sequelize时出现云SQL部署错误

屠瑞
2023-03-14

我想部署我的节点应用程序到应用引擎,并使用云sql mysql和后遗症用于ORM,但我在部署时得到以下错误,没有进一步的信息需要调试。

我的yaml是(带有经过编辑的详细信息):

env: flex
runtime: nodejs
env_variables:
  SQL_USER: -
  SQL_PASSWORD: -
  SQL_DATABASE: -
  INSTANCE_CONNECTION_NAME: -

  beta_settings:
  cloud_sql_instances: -

无法连接到SQL数据库:未定义未捕获错误{文件名:“/app/node_modules/sequelize/lib/dialts/mysql/connection-manager.js”,行:133,行:19,消息:“connect ENOENT/cloudsql/app:europe-west1:db”,类型:“sequelizeConnectionError”,堆栈:“sequelizeConnectionError:connect ENOENT/cloudsql/app:europe-west1:db\n在promise.tap.then.catch.errase/async.js:131:9)\n在async._drainqueues(/app/node_modules/bluebird/js/release/async.js:147:5)\n在immediate.async.drainqueues[as_onimmediate](/app/node_modules/bluebird/js/release/async.js:17:14)\n在runCallback(timers.js:705:18)\n在tryOnImmediate(timers.js:676:5)\n在

ORM代码:

const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
      dialect: 'mysql',
      host: '/cloudsql/app:europe-west1:db',
      pool: {
          max: 5,
          min: 0,
          acquire: 30000,
          idle: 10000
      },
      dialectOptions: {
          socketPath: '/cloudsql/app:europe-west1:db'
      },
      logging: false
    });

共有1个答案

司寇旺
2023-03-14

首先,您的app.yaml不应该有beta_settings:缩进:

...
  INSTANCE_CONNECTION_NAME: <YOUR_INSTANCE_CONNECTION_NAME>

beta_settings:
  cloud_sql_instances: <YOUR_INSTANCE_CONNECTION_NAME>

接下来,unix套接字位于/cloudsql/ 。您应该使用app.yaml中指定的环境变量以编程方式设置:

socketPath: util.format('/cloudsql/%s', process.env.INSTANCE_CONNECTION_NAME), // '/cloudsql/<YOUR_INSTANCE_CONNECTION_NAME>`

您还可以在app.yaml中指定sql_usersql_passwordsql_database作为环境变量,但可以调用process.env.db_userprocess.env.db_passprocess.env.db_name。如果您希望它们具有任何值,则它们需要保持一致。

最后,Sequelize对如何最好地使用unix套接字有点不清楚-hostdialtoptions.socketpath可能不应该同时设置。从后遗症文档来看,我建议只使用socketpath:

const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
      dialect: 'mysql',
      pool: {
          max: 5,
          min: 0,
          acquire: 30000,
          idle: 10000
      },
      dialectOptions: {
          socketPath: util.format('/cloudsql/%s', process.env.INSTANCE_CONNECTION_NAME),
      },
      logging: false
    });
 类似资料:
  • 部署过程中出错:部署应用程序[EnterpriseApplication1]时出现异常:UnsupportedClassVersionError:类mn.interactive.module.meta.dao.MetadataDao的主要或次要版本号不受支持,这些版本号大于Java Runtime Environment版本1.7.0_02中的版本号。有关详细信息,请参阅server.log。 将

  • 我已经设置和快速服务器上运行Firebase云功能。现在,我试图使用CLI使用“Firebase部署-仅函数”将其部署到Firebase,但每次都失败,说有一个意外的令牌。我怀疑在index.js文件中使用异步箭头函数有问题,但我不确定,我也需要它们来完成我的项目。 这是索引。js文件: 以下是我在尝试运行firebase deploy(仅限函数)时遇到的错误: ==部署到“homunculus-

  • 我正在尝试通过GitLab CI/CD将云函数从GitLab中的存储库部署到Google云函数。我得到了标题和下面的错误。 错误:(gcloud.functions.deploy)ResponseError:status=[403],code=[probled],message=[Permission'cloudfunctions.functions.get'denied on resource'

  • 我正在使用cloud函数部署python函数(版本=3.7,内存=1go,超时=1s)。 到目前为止,它非常有效。 但是,我注意到,默认情况下,云函数将其区域设置为。我需要我的函数在中,所以我使用

  • 我有一个错误与terraform代码,而部署GCP作曲家资源: google_composer_environment.composer-beta: googleapi:错误400:属性密钥必须是形式-。不能包含开始方括号、结束方括号或连字符,并且不能包含分号或等号。整个属性密钥可能不包含句点。, badRequest 在部署GCP资源时,会出现以下问题:https://www.terraform

  • 我试图在GlassFish server 4.1.0中部署ADF 12.1.3应用程序,但在部署过程中出现以下错误:将ADF essentials 3.1.2复制到GlassFish中的lib文件夹,ADF应用程序为12.1.3版本,GlassFish版本为4.1.0 部署过程中发生错误:部署应用程序时出现异常[MegatronApplicationOCS_07012015]:org.xml.sa