问题标签 [node-mysql2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 正确处理 mysql 查询的 async/await
我正在尝试执行 mysql 查询,将值异步分配给 const 以供以后在我的代码中使用。
到目前为止,我所拥有的是:
但 plan_free 返回 [object Object]。我确信我已经接近目标,但我不明白我仍然做错了什么。
编辑:通过添加以下行:
我看到 plan_free 的以下内容:
Plan_free: {"_events":{},"_eventsCount":0,"next":null}
这实际上甚至不接近我想要实现的目标。
node.js - 无法将 bindNodeCallback 与 node-mysql connection.query 一起使用
我正在尝试使用bindNodeCallback转换connection.query
为返回 observable 的函数。
声明 1 打印: [ TextRow { '1': 1 } ]
Statement 2 throws: TypeError: Cannot read property 'config' of undefined
在调试代码后,我看到它引用了this.config
(在 Connection 对象中),根据文档在调用输出函数时需要提供该引用。
所以我添加this
到声明 3,但由于某种原因,我没有得到我所期望的:
声明 3 打印: [[ TextRow { '1': 1 } ],[ColumnDefinition { _buf:..., _clientEncoding: 'utf-8'....]]
我的问题是,我应该如何使用bindNodeCallback()
来打印语句 1 打印的结果?
注意:如果您想使用旧版本测试此问题,mysql
您可以使用mysql
而不是mysql2
仅使用不同类型TextRow
=>RowDataPacket
和ColumnDefinition
=>出现相同问题的地方FieldPacket
mysql - MySQL 存储过程 vs Node.js 性能
我有一个带有 Express/Node.js 和 MySQL DB 的 API。我正在使用 Mysql2 npm 包(无 ORM)进行查询。对于某些特定路线,我有一些并行运行的查询(它们并不完全相关,因此无法执行连接)。我想知道使用存储过程是否可以提高我的性能,尤其是考虑到 Node.js 的非阻塞行为。我主要关心2个参数:
- 查询时间和
- 服务器开销。
换句话说,如果我从单个查询更改为存储过程,对我的响应时间和服务器利用率会有什么影响?
编辑:
我所说的并行运行查询的意思是,我设置了一个函数,以便查询可以独立运行(无需等待前一个查询的响应),并且一旦所有承诺解决,我的函数将结果作为承诺返回。解决。
一个小片段:
当然,主代码比这更健壮,有适当的错误处理和验证/位置一致性。
mysql - 连接太多 Nodejs + mysql2/promise
我正在使用 nodejs + mysql2 的项目中工作,有时我收到错误Too many connections。
我的连接:
控制器:
所以,我的问题是我必须使用createConnection而不是createPool,或者我只需要创建我的 conn 的一个实例。
javascript - MySQL JSON 列在 Linux 但不是 Windows 上解析
存在一个users
包含 2 列的表的数据库,userId
并且saved
. userId
是一个简单的增量,saved
是 JSON 数据。
存在一行:
userId:1,保存:“{”value“:1}”
当以下代码在 Windows 上运行时
[ TextRow { saved: '{"value": 1}' } ]
在 Windows 上显示
[ TextRow { saved: { value: 1 } } ]
在 Linux 上显示
在 Linux 上解析我的 JSON 而不是在 Windows 上解析我的 JSON 究竟发生了什么?
MySQL版本都不同
mysql Ver 14.14 Distrib 5.7.33,适用于 Linux (x86_64)
mysql Ver 15.1 Distrib 10.4.17-MariaDB,适用于 Win64 (AMD64)
我不确定如何让它们都使用相同的版本。Windows 机器正在运行 XAMPP,看起来很麻烦。我现在正在尝试安装两者的相同版本。
该users
表是 InnoDB utf8mb4_general_ci
场地 | 类型 |
---|---|
用户身份 | 整数(10) |
已保存 | 长文本 utf8mb4_bin |
我实际上并没有将此代码用于任何事情,我使用 ORM 来执行此操作,但它使用 mysql2 进行查询,我将错误追溯到 mysql2 并只是从 GitHub 复制粘贴示例代码以测试它是否是罪魁祸首. 如果我真的在使用它,我会使用基于 Promise 的代码。
MySQL2 在两个平台上确实是相同的版本。2.2.5。
有趣的是,mysql 包不会出现这个问题。我认为这表明包装本身正在发生一些时髦的事情。
javascript - 数组长度报告不一致
十年前我开发了一个 MS Access 桌面数据库应用程序,现在我尝试使用 node、electron 和 mysql 进行重建,现在我是一个正在恢复的 windows 用户。
在导入数据库的必要部分后,我首先在应用程序中重新创建最简单的表单:https ://imgur.com/a/oRfcsXw 。
问题出在数据控件的操作中(左下角),特别是在使用新记录按钮 (">+") 时。虽然它有时会正确地增加记录号(屏幕截图中的“336”),但有时它不会。当它粘住时,继续添加记录最终会使其突然赶上,然后最终再次粘住。调试指示原因是未正确报告rows.length
in 。newRecord()
似乎可以安全地假设这与我令人沮丧地无法完全理解异步执行、回调、promise 和 async/await 有关,尽管在过去的四天里我的智商适中并且对无数关于该主题的文章进行了猛烈抨击。我想我只需要看看一个如何做到这一点的例子,因为它适用于我的情况,然后我才能更好地掌握这个概念。所以请随意忽略下面这个 noobie 代码中的许多缺陷,其中一些他知道,并且我确定其中很多他不知道,并且只关注我如何获得准确的rows.length
.
调试输出显示前两次newRecord()
运行正常,随后五个实例rows.length
被错误报告,然后赶上最后一次运行。
mysql - NodeJS - 如何在 MySQL 中插入 blob 图像
我有一个表示图片的十六进制代码或 int8 的 int 列表,我需要将其作为 Blob 插入 MySQL。我在 API 中使用 NodeJS Express 服务器来执行此操作。我正在使用节点数据包 node-mysql2,我的 NodeJS 版本是 NodeJS 12。
所以我的 API 收到这个:[137,80,78,71,13,10,26,10,0,0,0,...96,130]
我想在 MYSQL 中将它作为 Blob 插入(这是一张图片)。请问我该怎么做?我什么都没找到……我做了很多 StackOverflow 主题和 Google 页面,但我没有找到。
提前感谢您的帮助!
mysql - 在继续使用 NodeJS 之前等待异步功能
我目前正在使用 NodeJS v10.24.0,并且在将 MySQL 查找设置为与 ExpressJS 异步时遇到了一些麻烦。
主要的:
sqlMgr.lookupName:
我一直在纠结,并在任何可能的地方打了 await 和 async ,但页面只会呈现,并且 uuid 将在 MySQL 查找完成之前返回未定义。
mysql - 当 index.js 有“require('mysql2');”时,“分配失败 - 进程内存不足”
目的
我想使用mysql2
(npm)。
脚步
- 安装 MySQL
brew install mysql
,设置以确保我可以登录mysql -r root -p
- 运行
npm init
和npm install mysql2 --save
- 创建
index.js
(见下文) - 跑
node index.js
- 请参阅下面的错误。
步骤(检查是否mysql2
导致问题)
- 注释掉 index.js 的第二行
- 跑
node index.js
- 确认终端显示“之前”和“之后”没有错误。
index.js
控制台(错误消息)
环境
- Mackbook Air (M1, 2020)
- macOS:11.2.2
- 节点:14.15.5
- npm:7.6.1
- mysql2(npm):2.2.5
- mysql (brew): Ver 8.0.23 for osx10.16 on x86_64 (Homebrew)
mysql - 如何使用 AG-Grid valueSetter 使用 NULL 值更新 MySQL 记录?
这不是诀窍。控制台上不会产生错误,但刷新页面只会带回以前的值。替换null
为适合该列的任何其他数据按预期工作。
只是为了好玩,我还尝试了以下方法。但没有更新发生,控制台上也没有出现错误。