ReactJS CRUD训练中VS Code操作MySQL数据库无反应求助
解决方案:排查你的CRUD无响应问题
你的代码和操作流程里有几个关键问题导致数据无法插入,按以下步骤逐一排查:
1. 数据库连接未建立
你的代码只创建了数据库连接对象,但没有调用连接方法,导致Node程序根本没和MySQL建立连接,执行db.query自然不会有任何效果。
修改代码,添加连接逻辑并处理连接错误:
const express = require("express") const app = express() const mysql = require("mysql") const db = mysql.createConnection({ host: "localhost", user: "root", password: "123456", database: "gamedb", }) // 新增:建立数据库连接并处理连接错误 db.connect((err) => { if (err) { console.error("数据库连接失败:", err); return; } console.log("已成功连接到MySQL数据库"); }) app.get('/', (req, res) => { const sqlInsert = "INSERT INTO gamestab (gamename, gamedes) VALUES ('Diablo', 'Diablo is an action role-playing dungeon crawler video game series developed by Blizzard North.');" db.query(sqlInsert, (err, result) => { // 新增:处理SQL执行错误 if (err) { console.error("SQL执行失败:", err); res.status(500).send("插入数据失败"); return; } console.log("数据插入成功:", result); res.send('数据已插入'); }) }); app.listen(3001, () => { console.log('服务运行在端口3001') })
2. 操作方式错误:不要把Node脚本当SQL执行
你提到“点击‘执行脚本的选定部分’”,这是执行SQL脚本的操作,但你的代码是Node.js后端服务代码,正确的运行流程是:
- 在VS Code终端中,进入代码所在目录,执行
node 你的文件名.js启动服务 - 打开浏览器访问
http://localhost:3001,或者用Postman等工具发送GET请求到该地址,才会触发插入逻辑
3. MySQL 8.0身份验证兼容性问题
mysql包(旧版)对MySQL 8.0默认的caching_sha2_password身份验证支持不佳,可能导致连接失败但无明显报错。解决方法二选一:
- 切换到
mysql2包:执行npm uninstall mysql && npm install mysql2,然后把代码里的require("mysql")改成require("mysql2") - 修改MySQL用户验证方式:在MySQL Workbench中执行以下SQL,将root用户改为
mysql_native_password验证:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES;
4. 确认数据库表结构匹配
确保gamedb数据库中的gamestab表存在,且gamename、gamedes字段的类型和长度能容纳你插入的数据(比如gamename是VARCHAR类型且长度足够;gamedes如果是长文本,建议用TEXT类型)。
内容的提问来源于stack exchange,提问作者RockSolo
相关产品推荐
相关产品推荐

