无法使用 sequelize 和无服务器框架从部署的节点 azure 函数连接到 mysql 灵活的服务器
Unable to connect to mysql flexible server from deployed node azure function using sequelize and Serverless Framework
正如标题所说,我有一系列调用数据库(mysql)的 azure 函数(函数应用程序)也使用 sequelize 部署在 azure 上,并且它们都在同一个资源组中(部署到 us-east-2).
当我 运行 api 在本地一切正常时,我能够调用 api 并且它能够与数据库通信。我可以使用无服务器框架很好地部署所有内容,但是当我尝试调用已部署的端点之一时,我返回以下 500 错误:
{
"name": "SequelizeConnectionError",
“parent”:{
"errno": "EACCES",
“代码”:“EACCES”,
“系统调用”:“连接”,
“地址”:“127.0.0.1”,
“端口”:3306,
“致命”:真实
},
“原版的”: {
"errno": "EACCES",
“代码”:“EACCES”,
“系统调用”:“连接”,
“地址”:“127.0.0.1”,
“端口”:3306,
“致命”:真实
}
}
这个连接错误可能是因为我的凭据没有用 sequelize 部署吗?如果是这样,我该如何部署它们?我将它们作为环境变量存储在 local.settings.json 文件中。我检查了防火墙,因为这是一个带有虚拟数据的概念证明,所以我只是让所有内容都进入,所以不可能那样。
这是我的续集连接:
const {
Sequelize,
} = require("sequelize");
const DATABASE_HOST = process.env["DATABASE_HOST"];
const DATABASE_CATALOG = process.env["DATABASE_CATALOG"];
const DATABASE_PORT = process.env["DATABASE_PORT"];
const DATABASE_USER = process.env["DATABASE_USER"];
const DATABASE_PASSWORD = process.env["DATABASE_PASSWORD"];
const sequelize = new Sequelize(DATABASE_CATALOG, DATABASE_USER, DATABASE_PASSWORD, {
host: DATABASE_HOST,
port: DATABASE_PORT,
dialect: 'mysql',
ssl: true,
"dialectOptions": {
"ssl": {
"require": true
}
},
pool: {
max: 20,
min: 0,
acquire: 120000,
idle: 10000
}
});
module.exports = sequelize;
任何帮助将不胜感激,这是一个附带项目,我已经盯着它看太久了。
您可以在 Azure 门户中物理添加所需的配置设置。
function app >> configuration >> application setting
点击新的应用程序设置
添加凭据等所需设置后,您必须重新启动该功能。
现在您可以在您的应用中以类似的方式调用此设置:-
const port = process.env.PORT ;
正如标题所说,我有一系列调用数据库(mysql)的 azure 函数(函数应用程序)也使用 sequelize 部署在 azure 上,并且它们都在同一个资源组中(部署到 us-east-2).
当我 运行 api 在本地一切正常时,我能够调用 api 并且它能够与数据库通信。我可以使用无服务器框架很好地部署所有内容,但是当我尝试调用已部署的端点之一时,我返回以下 500 错误:
{ "name": "SequelizeConnectionError", “parent”:{ "errno": "EACCES", “代码”:“EACCES”, “系统调用”:“连接”, “地址”:“127.0.0.1”, “端口”:3306, “致命”:真实 }, “原版的”: { "errno": "EACCES", “代码”:“EACCES”, “系统调用”:“连接”, “地址”:“127.0.0.1”, “端口”:3306, “致命”:真实 } }
这个连接错误可能是因为我的凭据没有用 sequelize 部署吗?如果是这样,我该如何部署它们?我将它们作为环境变量存储在 local.settings.json 文件中。我检查了防火墙,因为这是一个带有虚拟数据的概念证明,所以我只是让所有内容都进入,所以不可能那样。
这是我的续集连接:
const {
Sequelize,
} = require("sequelize");
const DATABASE_HOST = process.env["DATABASE_HOST"];
const DATABASE_CATALOG = process.env["DATABASE_CATALOG"];
const DATABASE_PORT = process.env["DATABASE_PORT"];
const DATABASE_USER = process.env["DATABASE_USER"];
const DATABASE_PASSWORD = process.env["DATABASE_PASSWORD"];
const sequelize = new Sequelize(DATABASE_CATALOG, DATABASE_USER, DATABASE_PASSWORD, {
host: DATABASE_HOST,
port: DATABASE_PORT,
dialect: 'mysql',
ssl: true,
"dialectOptions": {
"ssl": {
"require": true
}
},
pool: {
max: 20,
min: 0,
acquire: 120000,
idle: 10000
}
});
module.exports = sequelize;
任何帮助将不胜感激,这是一个附带项目,我已经盯着它看太久了。
您可以在 Azure 门户中物理添加所需的配置设置。
function app >> configuration >> application setting
添加凭据等所需设置后,您必须重新启动该功能。
现在您可以在您的应用中以类似的方式调用此设置:-
const port = process.env.PORT ;