反应:试图将 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