You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js连接MySQL插入数据失败,遇两类报错求助

解决两类Node.js+MySQL开发错误:数据库访问拒绝与next未定义

一、数据库访问被拒绝:Access denied for user 'root'@'localhost' (using password: YES)

原因

项目数据库连接配置的用户名/密码与XAMPP中MySQL的实际设置不匹配,或是root用户的localhost访问权限未正确配置。

解决方案

  • 核对XAMPP MySQL的root密码:打开XAMPP控制面板,点击MySQL模块的「Admin」进入phpMyAdmin,在「用户账户」页面查看root@localhost的密码设置。
  • 修正项目数据库连接配置:找到项目中的数据库配置文件(如db.js、config.js),确保username为'root',password与phpMyAdmin中记录的一致。若XAMPP默认root无密码,将配置里的password设为空字符串''。
  • 重置或授权root用户权限(若上述步骤无效):在phpMyAdmin的SQL控制台执行以下语句:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

二、代码中next未定义:ReferenceError: next is not defined

原因

路由处理函数未将next作为参数传入,导致调用next(err)时找不到该变量。

解决方案

修改路由代码,将next添加到处理函数的参数列表中:

router.post("/", async (req, res, next) => {
    try {
        res.json(await tourist.create(req.body));
    } catch (err) {
        console.error(`Error while creating Tourist!`, err.message);
        next(err);
    }
})

额外建议:确保Express应用配置了全局错误处理中间件,以正确捕获next(err)传递的错误:

app.use((err, req, res, next) => {
    res.status(500).json({ error: err.message });
});

关于HTML提交按钮的补充

当前报错与HTML按钮无直接关联,若后续表单提交出现问题,需检查submitTouristForm()函数的实现逻辑,确保表单数据能正确以POST请求发送到目标路由。

内容的提问来源于stack exchange,提问作者May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:50:26