【发布时间】:2020-09-25 23:03:33
【问题描述】:
在我的 NextJS Vercel 应用程序中,在关注 Vercel's official tutorial 之后,我无法成功连接到位于 GoDaddy 上的远程 MySQL 数据库。
我希望 api 页面返回由数据库查询产生的 JSON 数据。相反,我得到
我尝试更改用户名,但由于某种原因,我拥有的 4 个环境变量 - MYSQL_USER、MYSQL_DATABASE、MYSQL_HOST 和 MYSQL_PASSWORD - 从未在实时站点上更新!我在 Production、Preview 甚至 Development 中进行了更改,它们在上述链接的对象中保持不变。
在我的localhost 上一切正常,因为我的家庭 IP 地址已在 cPanel 中列入白名单。但是 Vercel 具有动态 IP,因此我无法在实时站点上执行此操作。如果我在 GoDaddy 上托管,它也可以正常工作,但我需要在 Vercel 上托管。
这是我连接到数据库的 db.js 文件的源代码
lib/db.js
const mysql = require('serverless-mysql');
const db = mysql({
config: {
host: process.env.MYSQL_HOST,
database: process.env.MYSQL_DATABASE,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
}
})
exports.query = async query => {
try {
const results = await db.query(query);
await db.end();
return results
} catch (error) {
return {
error
}
}
}
pages/api/columns/index.js
const db = require('../../../lib/db')
const escape = require('sql-template-strings')
/**
* Queries the database to return the newspaper's columns
* @param {IncomingMessage} _req The request object (unused)
* @param {ServerResponse} res The response object
*/
module.exports = async (_req, res) => {
const columns = await db.query(escape`SELECT * FROM columns ORDER BY id`);
res.status(200).json({ columns })
}
【问题讨论】:
标签: mysql next.js web-hosting remote-access vercel