我正在将 Azure 应用程序服务与灵活的 mysql 数据库服务器结合使用。我已成功将我的网站部署到 NodeJS v18.LTS,但我的服务器在我的应用程序服务日志流中抛出:SequelizeHostNotFoundError: getaddrinfo ENOTFOUND mynameserver.mysql.database.azure.com。在下面的问题中,我找到了一个可能的解决方案,将连接主机的 IP 地址添加到我的数据库实例而不是 FQDN https://stackoverflow.com/questions/25521755/errorerror-getaddrinfo-enotfound-mysql .
但是,完全不鼓励这种配置。
如何正确设置 Flexible Server for MySQL 实例以在生产应用服务环境中工作而不违反此政策?
这是我的连接实例配置:
const sequelize = new Sequelize(
process.env.DATABASE,
process.env.USER,
process.env.MySQLPASSWORD,
{
host: process.env.HOST, // String conection xxxx.mysql.database.azure.com
dialect: process.env.dialect,
});
最佳答案
这里我有另一种连接到 azure MySQL 灵活服务器的方法,我在其中使用了
mysql2
npm 包。现在我直接在代码中硬编码配置数据,但是您可以使用之前使用过的相同方式轻松读取应用程序设置,只需确保您首先读取相应的设置,例如:username in a变量,然后在配置与 MySQL 的连接时添加该变量。
var username = process.env.USER
- 这里我们使用创建连接函数来连接到 MySQL 数据库,然后使用查询函数来运行查询。
以下是 Express api 的代码:
app.use('/', (req,res)=>{
const mysql = require('mysql2');
const connection = mysql.createConnection({
host:'',
user:'',
database:'',
password:'',
port:'',
});
connection.query("CREATE TABLE TESTTABLE ( TEST int)",(err)=>{
console.log(err);
});
res.send("Hello World");
});
这里我已将数据库连接到 MySQL Workbench,并在其中使用上述代码创建了表。
在服务器中我有 disabled the ssl mandate
关于mysql - 如何将 Azure 应用服务连接到 Azure Database for MySQL 灵活服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74966537/