反应:试图将 index.js 连接到数据库,但它不工作

Posted

技术标签:

【中文标题】反应:试图将 index.js 连接到数据库,但它不工作【英文标题】:React: Trying to connect index.js to database but its not working 【发布时间】:2021-11-30 00:57:09 【问题描述】:

所以我建立了一个前端,您可以在其中填写电影名称、评论并将其提交到数据库。现在我试图将我创建的 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' 部分。

【问题讨论】:

【参考方案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 Bejaoui在a 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。

以上是关于反应:试图将 index.js 连接到数据库,但它不工作的主要内容,如果未能解决你的问题,请参考以下文章

无法从 docker 容器内的 Spring Boot 连接到 Redis

无法将本机反应连接到本地主机

wxWidgets通过wxPaintDC将鼠标事件连接到形状对象以进行删除

如何创建一个使用 PHP 连接到数据库的 HTML 登录?

如何通过反应连接到 SQL 数据库?

如何将 mysql 工作台连接到在 docker 中运行 mysql?