【问题标题】:React: Trying to connect index.js to database but its not working反应:试图将 index.js 连接到数据库,但它不工作
【发布时间】:2023-03-14 10:34:01
【问题描述】:

所以我建立了一个前端,您可以在其中填写电影名称、评论并将其提交到数据库。现在我试图将我创建的 mysql 数据库连接到 index.js ,以便它被第一个条目填充。我试图像这样完成它:

const express = require('express');
const app = express();
const mysql = require('mysql');

const db = mysql.createPool({
    host: "localhost",
    user: "root",
    password:"password",
    database:'CRUDDatabase',
});

app.get('/', (req, res) => {
    const sqlInsert = "INSERT INTO Movie_Reviews(movieName, movieReview) VALUES (1,'inception', 'good movie');" 
    db.query(sqlInsert, (err, result) =>{
        res.send("change done");
    });
})

app.listen(3001, () => {
console.log("running on port 3001")
})

但不知何故,前端得到了我发送“更改完成”的文本,但数据库仍然没有显示任何条目。有什么想法可能是我的错误吗?是代码错误还是与我的数据库配置有关。在 mysql 工作台中,我只是创建了一个默认连接,没有进行任何更改。

编辑:错误似乎如下: 错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端

编辑: 以下评论解决了我的问题: 在 MYSQL Workbench 中执行以下查询 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';其中 root 作为您的用户 localhost 作为您的 URL 和密码作为您的密码 然后运行此查询以刷新权限:刷新权限;完成后尝试使用节点连接。如果这不起作用,请尝试不使用 @'localhost' 部分。

【问题讨论】:

    标签: javascript mysql node.js reactjs database


    【解决方案1】:

    我认为您的代码中有错误,但由于您没有在 err 变量中进行测试,因此没有显示它,请尝试使用此代码以显示您遇到的错误:

    const express = require('express');
    const app = express();
    const mysql = require('mysql');
    
    const db = mysql.createPool({
      host: "localhost",
      user: "root",
      password:"password",
      database:'CRUDDatabase',
    });
    
    app.get('/', (req, res) => {
      const sqlInsert = "INSERT INTO Movie_Reviews(movieName, movieReview)       VALUES (1,'inception', 'good movie');" 
      db.query(sqlInsert, (err, result) =>{
        if(err) {
           console.log(err);
           res.send(err.toString()); 
        }
        res.send("change done");
      });
    })
    
    app.listen(3001, () => {
      console.log("running on port 3001")
    })
    

    【讨论】:

    • 好的,非常好的主意,非常感谢:我按照你说的做了,它显示了以下错误:错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端你知道这是什么意思吗?
    • 在 MYSQL Workbench 中执行以下查询 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';其中 root 作为您的用户 localhost 作为您的 URL 和密码作为您的密码 然后运行此查询以刷新权限:刷新权限;完成后尝试使用节点连接。如果这不起作用,请尝试不使用 @'localhost' 部分。
    【解决方案2】:

    所以正如Med Amine Bejaouia comment中指出的那样,解决方案是:

    在 MYSQL Workbench 中执行以下查询 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';其中 root 作为您的用户 localhost 作为您的 URL 和密码作为您的密码 然后运行此查询以刷新权限:刷新权限;完成后尝试使用节点连接。如果这不起作用,请尝试不使用 @'localhost' 部分。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2016-06-25
    • 2016-09-04
    • 2017-01-21
    相关资源
    最近更新 更多