问题标签 [mariasql]
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.
javascript - 如何处理 Node.js 中的错误/异常?
我已经在 Node.js 中编写了代码以使用 seneca 微服务连接 mariadb db,但我不知道如何处理错误/异常并向用户显示正确的消息。所以请帮助我会出现哪些类型的错误以及如何处理它。
这是我的代码
javascript - 如何使用nodejs在mariadb中进行批量插入?
每当我尝试运行我的代码时,这都会显示列数不匹配错误。
错误:
mariadb - 使用 maria db 的地理空间
我需要使用 maria db 从特定纬度/经度中选择半径 30 公里内的所有点作为圆。
例如:
node.js - 当集群退出并重新启动时,使用集群和 mariaSQL 100% 的 CPU 使用率
在我的 Node.JS 应用程序中,我使用集群来利用我的多核 CPU。我正在使用节点的 mariasql 库与我的数据库进行通信。由于该node-mariasql
库不支持池化,因此我使用第三方 - generic-pool来维护连接池。
我注意到,每当主线程中的连接在未捕获的异常导致其中一个子集群重新启动后关闭时,我们的 CPU 使用率就会上升到 100%。
每当子集群重新启动时,我都会破坏所有 MySQL 连接。
节点版本 - v4.2.2
MariaDB 版本 - v10.0.15
节点-mariasql 版本 - v0.2.5
可重现的代码 - https://github.com/bsurendrakumar/node-simplex/
代码片段
创建连接池...
在主线程...
一旦发生未捕获的异常...
清理功能...
池中的最小连接数设置为 5。它的所有配置都可以在这里找到。因此,当服务器启动时,通用池将启动 5 个与 MySQL 的连接并将它们保留在其池中。
池中的idleTimeout
对象的时间已设置为 120 秒。这意味着如果池中的对象超过 5 个(因为最少 5 个),并且其中一个在过去 120 秒内未使用,它将被销毁。
在服务器启动时,我正在对我们的国家模型进行简单调用以获取国家列表。这段代码在这里。这将建立与数据库的新连接,因此现在池中将有 6 个 SQL 连接,其中一个将在 120 秒后被清除。
以下是我认为问题在于我们使用mariasql库的分步过程 -
- 当服务器启动时,我将进程 ID 记录到控制台。获取主进程 ID,例如 - 20584。
使用 - 查看进程正在使用的文件描述符
ls -l /proc/20584/fd
。记下套接字连接。这个的输出看起来像这样 -lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 12 -> socket:[2469914] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 13 -> socket:[2469917] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 14 -> socket:[2468106] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 15 -> socket:[2468109] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 17 -> socket:[2467206] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 18 -> socket:[2467208] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 19 -> socket:[2467210] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 2 -> /dev/tty lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 20 -> socket:[2467212] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 21 -> socket:[2467214] lrwx------ 1 abijeet abijeet 64 Jun 9 19:24 22 -> socket:[2467306]
复制一些套接字编号,例如2467212,然后运行
lsof | grep 2467212
。您会注意到这些是与 MySQL 服务器的连接。的输出应该是这样的 -node 20584 abijeet 20u IPv4 2467212 0t0 TCP localhost:57092->localhost:mysql (ESTABLISHED) V8 20584 20585 abijeet 20u IPv4 2467212 0t0 TCP localhost:57092->localhost:mysql (ESTABLISHED) V8 20584 20586 abijeet 20u IPv4 2467212 0t0 TCP localhost:57092->localhost:mysql (ESTABLISHED) V8 20584 20587 abijeet 20u IPv4 2467212 0t0 TCP localhost:57092->localhost:mysql (ESTABLISHED) V8 20584 20588 abijeet 20u IPv4 2467212 0t0 TCP localhost:57092->localhost:mysql (ESTABLISHED)
通过访问http://127.0.0.1:3000/api/v1/country/list使服务器崩溃。这将使其中一个子进程崩溃。每当发生未捕获的异常时,我都会进行一些清理并退出。然后我分叉另一个进程来代替刚刚被杀死的进程。清理包括 -
- 关闭http服务器
- 关闭通用池中的 MySQL 连接
- 关闭 winston 记录器流。
- 等待主线程中的 MySQL 连接关闭。发生这种情况时,我正在向控制台写入日志 -
Destroying / ending master thread ID - 4984
- 检查您的 CPU 使用率,您会注意到其中一个 CPU 已达到 100%。
- 下一次运行,
strace -o log.txt -eepoll_ctl,epoll_wait -p 20584
. 请注意,您可能需要安装strace。此命令记录epoll_ctl, epoll_wait
Node.JS 进程进行的所有系统调用,并将其放入当前工作目录名为log.txt的文件中。 打开log.txt文件,您会注意到与这些类似的日志 -
epoll_wait(5, {{EPOLLIN|EPOLLHUP, {u32=16, u64=16}}}, 1024, 847) = 1 epoll_ctl(5, EPOLL_CTL_DEL, 16, 7ffe441aa850) = -1 EBADF (Bad file descriptor) epoll_wait(5, {{EPOLLIN|EPOLLHUP, {u32=16, u64=16}}}, 1024, 845) = 1 epoll_ctl(5, EPOLL_CTL_DEL, 16, 7ffe441aa850) = -1 EBADF (Bad file descriptor) epoll_wait(5, {{EPOLLIN|EPOLLHUP, {u32=16, u64=16}}}, 1024, 843) = 1 epoll_ctl(5, EPOLL_CTL_DEL, 16, 7ffe441aa850) = -1 EBADF (Bad file descriptor)
这里的文件描述符是16,如果你把它和你之前的
ls -l /proc/20584/fd
and关联起来lsof | grep 2467212
,你会发现这属于刚刚关闭的 MySQL 连接。
这让我相信在某个地方,即使与 MySQL 的连接被释放,也有一个文件描述符挂在那里,它仍在使用中。我在论坛上发现了各种类似问题的主题 -
node.js - 错误:找不到模块“../build/Debug/sqlclient”
在目录中,我执行了标准-npm install mariasql --save。当我运行我的服务器文件-node app.js。它返回如下错误:
mysql - Maria db 值没有被插入?
我正在使用玛丽亚数据库。这些值没有插入到数据库中。我将值作为 Json 数组从我的路线传递。
得到这个值的函数是:
它返回如下错误:
mysql - maria db插入-sql注入-错误
我正在尝试使用 SQL 注入将值插入数据库(MariaDB)。
我使用的查询格式是:
但这会产生语法错误:
Maria Db 连接在:128.199.242.240
{ [错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“NULL”附近使用正确的语法] 代码:1064 }
node.js - 如何在 ubuntu 14 上使用 nodejs 4.x 安装 mariasql?
我正在尝试在 AWS 的 EC2 上的 Ubuntu 上使用 node.js 和 mariaDB 设置服务器。
这是我安装的版本..
现在我想连接 node.js 和 mariaDB,所以我尝试用这个命令安装 mariasql..
但是发生了这个错误..
已经安装了node-gyp。我尝试了旧版本的节点,它是 0.10.x,但效果不佳。我做错了什么?
mysql - 如果数据小于设定的限制,花费太多时间
我有一个有 200K 行的表。当我执行查询时,它花费了太多时间;大约 2 分钟。
这是我的查询:
helloworld|
仅发生在 2 行。
我想更改查询,因此如果数据出现超过 20 次,它应该返回 20 行,否则无论存在什么行。
如何优化这个查询?
asp.net - 将 ASP.NET 连接到 Amazon RDS MariaDB
前言:我已经并且可以从 MySQL Workbench 连接到 Amazon RDS 中的各个数据库,从而使我的用户名、实例 url、端口号以及密码正确。
我正在为 ASP.NET 创建一个在线应用程序,并且需要连接到 Amazon RDS 的 MariaDB。我尝试通过 web.config 或 c# 代码方式来实现,但两者都不起作用。需要建议。
方法一
网络配置:
对于我的 C# 代码方面:
方法二
这是我面临的错误形式:
消息“在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误:25 - 连接字符串无效)”
谢谢!