nodejs系列:19.node之mysql更新数据

系列介绍

该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。

这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。

环境安装

实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。

以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。

nodejs安装

前言

在上一篇文章里nodejs系列:18.node之mysql增加数据,我们介绍了怎么往mysql的表格增加数据。

往表格里面增加了数据,过一段时间,当数据发生改变时,我们想要修改mysql的表格里面的数据,那怎么修改呢?

接下来,就要介绍一下怎么修改mysql的表格数据

实现
创建文件

先创建一个index.js文件

引入依赖

要使用mysql,需要使用到mysql的依赖,先安装一下

npm install mysql 

在index.js文件里引入依赖

 const myqsl = require("mysql") 
创建connection实例对象
 const connecton = myqsl.createConnection({host: "localhost",user: "root",password: "root",database: "test",
}) 
连接数据库
 connecton.connect() 
更新数据

先定义一个要执行的sql语句

 let sql = "UPDATE student SET sex = ?,age = ? WHERE Id = ?" 

该sql语句表达的意思是,更新student表格里的数据,更新的字段为sexage字段,通过Id查找对应列的数据

定义要更新的值

 let sqlParmas = [1, 25, 1] 
  • 第一个值对应sex字段
  • 第二个值对应age字段
  • 最后一个值代表的是id

这个id是我从mysql的可视化工具里查看到的。

使用connection实例对象的query方法执行sql语句

 connecton.query(sql, sqlParmas, function (err, results, fields) {if (err) throw errconsole.log(results)
}) 

在cmd里,用node运行index.js文件,查看打印日志

我们可以看到,数据更新后,把对应的信息返回给我们了。

接着到mysql可视化工具里查看

我们发现,第一列的数据已经更新了。

小结

在本篇文章里,我们主要介绍了怎么更新mysql里表格的数据。

主要是利用UPDATE这一sql语句来更新的。

最后,放上自己比较喜欢的一句诗句:

千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》

0 info it worked if it ends with ok 1 verbose cli [ 1 verbose cli 'E:\\nodeNvm\\nodejs\\node.exe', 1 verbose cli 'E:\\nodeNvm\\nodejs\\node_modules\\npm\\bin\\npm-cli.js', 1 verbose cli 'run', 1 verbose cli 'dev' 1 verbose cli ] 2 info using npm@6.14.13 3 info using node@v14.17.3 4 verbose run-script [ 'predev', 'dev', 'postdev' ] 5 info lifecycle ruoyi@3.8.5~predev: ruoyi@3.8.5 6 info lifecycle ruoyi@3.8.5~dev: ruoyi@3.8.5 7 verbose lifecycle ruoyi@3.8.5~dev: unsafe-perm in lifecycle true 8 verbose lifecycle ruoyi@3.8.5~dev: PATH: E:\nodeNvm\nvm\v14.17.3\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;E:\work\communalization_manage_sxyd\node_modules\.bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\System32\HWAudioDriver;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;E:\maven\apache-maven-3.9.6\bin;E:\Java\jdk1.8.0_73\bin;E:\MySQL\MySQL Server 8.0\bin;E:\Redis;E:\VScode\Microsoft VS Code\bin;E:\Xshell\;E:\Java\jdk1.8.0_73\jre\bin;E:\GIT\Git\cmd;E:\Tencent\微信web开发者工具\dll;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;E:\Xftp\;E:\nodeNvm\nvm;E:\nodeNvm\nodejs;E:\nodeNvm\nvm\node_global;C:\Users\22782\AppData\Local\Microsoft\WindowsApps;E:\nodeNvm\nvm;E:\nodeNvm\nodejs; 9 verbose lifecycle ruoyi@3.8.5~dev: CWD: E:\work\communalization_manage_sxyd 10 silly lifecycle ruoyi@3.8.5~dev: Args: [ 10 silly lifecycle '/d /s /c', 10 silly lifecycle 'set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve' 10 silly lifecycle ] 11 silly lifecycle ruoyi@3.8.5~dev: Returned: code: 9 signal: null 12 info lifecycle ruoyi@3.8.5~dev: Failed to exec dev script 13 verbose stack Error: ruoyi@3.8.5 dev: `set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve` 13 verbose stack Exit status 9 13 verbose stack at EventEmitter.<anonymous> (E:\nodeNvm\nvm\v14.17.3\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16) 13 verbose stack at EventEmitter.emit (events.js:375:28) 13 verbose stack at ChildProcess.<anonymous> (E:\nodeNvm\nvm\v14.17.3\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:375:28) 13 verbose stack at maybeClose (internal/child_process.js:1055:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5) 14 verbose pkgid ruoyi@3.8.5 15 verbose cwd E:\work\communalization_manage_sxyd 16 verbose Windows_NT 10.0.26100 17 verbose argv "E:\\nodeNvm\\nodejs\\node.exe" "E:\\nodeNvm\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "dev" 18 verbose node v14.17.3 19 verbose npm v6.14.13 20 error code ELIFECYCLE 21 error errno 9 22 error ruoyi@3.8.5 dev: `set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve` 22 error Exit status 9 23 error Failed at the ruoyi@3.8.5 dev script. 23 error This is probably not a problem with npm. There is likely additional logging output above. 24 verbose exit [ 9, true ] 解决方法
最新发布
03-20
<think>好的,我现在要解决用户提供的npm运行dev脚本失败的问题。首先,我需要仔细分析日志中的错误信息,理解可能的原因,然后逐步排查并找到解决方法。 从用户提供的日志来看,错误发生在执行`npm run dev`时,脚本命令是`set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve`,退出状态码为9。错误提示中还提到可能不是npm的问题,需要查看更多日志。不过用户可能没有提供完整的输出,所以需要根据现有信息推断。 首先,我需要了解退出码9的含义。在Node.js中,退出码9通常表示进程被强制终止,可能由于系统或运行时的问题。常见原因包括内存不足、权限问题或环境配置错误。不过结合日志中的其他信息,可能还有其他因素。 接下来,查看用户的环境配置:Node.js版本是v14.17.3,npm版本是6.14.13。项目是ruoyi@3.8.5,可能是一个基于Vue.js前端项目,使用vue-cli-service启动开发服务器。用户设置的NODE_OPTIONS参数是`--openssl-legacy-provider`,这通常是为了解决Node.js版本升级后OpenSSL相关的问题。 可能的原因之一是Node.js版本与项目依赖的某些模块不兼容。Node.js v14.x已经结束维护,而某些较新的依赖可能需要更高版本的Node.js。另一个可能性是`--openssl-legacy-provider`参数的使用方式是否正确,尤其是在Windows环境下。 首先,检查Node.js版本是否满足项目要求。ruoyi框架可能有特定的Node.js版本要求。例如,若项目依赖的Vue CLI版本较新,可能需要Node.js 16或更高版本。用户使用的是v14.17.3,这可能不兼容,导致启动失败。建议用户升级Node.js到LTS版本,如v16.x或v18.x,并重新安装依赖。 其次,检查`NODE_OPTIONS`的设置是否正确。在Windows中,设置环境变量并在同一行执行命令时,应使用`&&`而不是单个`&`。原命令是`set NODE_OPTIONS=... & vue-cli-service serve`,这可能导致环境变量未正确应用,因为`&`在Windows命令提示符中用于分隔命令,而`&&`表示前一个命令成功后再执行下一个。正确的命令应该是`set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve`。修改package.json中的脚本部分,将`&`替换为`&&`可能解决问题。 此外,`--openssl-legacy-provider`通常用于Node.js 17+,当使用旧版OpenSSL时。用户使用的是Node.js 14,该版本可能不需要这个参数,或者可能不支持该选项,从而导致错误。尝试移除这个参数,看是否能正常启动。如果必须保留该参数,可能需要确保Node.js版本与参数兼容。 另一个可能性是依赖安装问题。如果node_modules存在损坏或未正确安装,可以尝试删除node_modules和package-lock.json(或yarn.lock),然后重新运行`npm install`。 此外,检查系统环境变量PATH是否有异常,特别是Node.js和npm的路径是否正确。日志中显示PATH包含多个路径,可能存在冲突或无效的路径。 最后,查看是否有其他错误日志,例如Vue CLI的详细输出,可能需要添加`--verbose`参数来获取更多信息,但用户提供的日志中可能没有这些细节。 总结可能的解决步骤: 1. 升级Node.js到v16或更高版本。 2. 修改脚本中的`&`为`&&`,确保环境变量正确设置。 3. 移除`--openssl-legacy-provider`参数,除非确认需要。 4. 清除node_modules并重新安装依赖。 5. 检查系统环境变量和权限问题。 需要逐步尝试这些步骤,确定哪个方法有效。</think>根据日志分析,这是运行`npm run dev`时出现的**OpenSSL兼容性问题**导致的错误。以下是分步解决方案: --- ### **错误原因** - **Node.js版本过旧**(v14.17.3)与某些依赖的加密算法不兼容 - `--openssl-legacy-provider`参数未正确设置(Windows环境语法问题) - 可能存在的依赖冲突 --- ### **解决方法** #### 1. 升级Node.js版本 Node.js 14.x已停止维护,建议升级到**16.x或18.x LTS版本**: ```bash nvm install 16.20.2 # 使用NVM切换版本 nvm use 16.20.2 ``` #### 2. 修正启动脚本语法(关键步骤) 修改`package.json`中的`dev`脚本,将`&`替换为`&&`: ```diff "scripts": { - "dev": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve", + "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve" } ``` #### 3. 清除缓存并重新安装依赖 ```bash npm cache clean --force rmdir /s /q node_modules # Windows删除node_modules del package-lock.json npm install ``` #### 4. 如果仍报错,尝试移除OpenSSL参数 如果升级Node.js后不需要此参数: ```diff "scripts": { - "dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve" + "dev": "vue-cli-service serve" } ``` --- ### **补充说明** - **为什么必须用`&&`?** Windows中`&`会直接执行后续命令,不等待环境变量生效。`&&`确保前一条命令完成后再执行后续操作。 - **OpenSSL问题的根源** Node.js 17+默认使用OpenSSL 3.0,某些旧项目需要`--openssl-legacy-provider`回退兼容。但Node.js 14无需此参数。 --- ### **验证是否解决** ```bash npm run dev ``` 如果看到`webpack compiled successfully`即表示成功。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值