问题标签 [mariadb-connector-c]
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.
c++ - 没有 mysql_config 的 MariaDB C 连接器
我正在从 mysql 迁移到 MariaDB。使用 mysql,我将 C 连接器链接到我的应用程序mysql_config --libs
,根据我在互联网上可以阅读的内容,使用 MariaDB 应该仍然可以,但在我的系统mysql_config
上不存在,我不知道如何获取它以及是否复制我最终会得到仍将与 MariaDB 兼容。
所以问题是:如何将 MariaDB 链接到我的 C/C++ 应用程序?
Debian 10 (Buster) 64 位 ~
mariadb-server 版本:1:10.3.15-1 ~
mariadb-client 版本:1:10.3.15-1 ~
先感谢您。
c - 为什么“查询期间丢失与 MySQL 服务器的连接”错误时不时发生(引发超时,查询前 ping)
我正在创建一个实验,其中服务器端是一个基于 libuv 的 C/C++ 应用程序,它在 mysql 服务器上运行查询(它在 localhost 上)。
在大多数情况下,它可以正常工作,但有时我会在此过程中的各个地方收到“查询期间与 MySQL 服务器的连接丢失”。
我试过提高所有的超时时间。但我认为这是不相关的,如果服务器被请求轰炸(比如每秒),同样的错误就会被抛出。
在进行查询之前,我正在 ping 服务器。
我试过重新连接选项,问题是一样的。
据我了解,单线程 libuv 和 mysql 应该可以实现此流程:
我想念什么?
c - 从 MySQL 5.6 升级到 MariaDB 10.3 后,“mysql_warning_count”错误地返回 0 个警告
我正在使用“MySQL Connector for C v6.1.11”连接到 MySQL 5.6.35 服务器。
当我mysql_real_query()
用来运行类似的查询SELECT MAKETIME(-1000,57,33)
时,mysql_warning_count()
正确返回 1 个警告(SHOW WARNINGS
会说“截断不正确的时间值:-1000:57:33”)。
我最近用 MariaDB 10.3.13 替换了 MySQL 5.6.35 服务器。相同的查询mysql_warning_count()
现在返回 0 个警告。但是,SHOW WARNINGS
仍会列出警告(如预期的那样)。
我尝试用最新的 MariaDB Connector/C (v3.1.6) 替换旧的 MySQL 连接器库,但问题仍然存在。
什么会导致不报告查询警告?我是否需要在某处设置标志,或应用一些兼容性设置?
使用的 SQL 模式是默认的,即: 对于 MySQL 5.6: NO_ENGINE_SUBSTITUTION
对于 MariaDB 10.3:STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO , NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
传递给的唯一客户端标志mysql_real_connect()
是CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS
(对于 MySQL 和 MariaDB)
r - R 的 MariaDB ODBC 驱动程序给出了奇怪的结果
使用MariaDB ODBC 3.1.3 Driver将数据从 MariaDB 导入 R 时会出现奇怪的行为。我要导入的数据库中的表是:
如果我使用MariaDB ODBC 3.1.3 驱动程序将表导入 R,我会在 R 中得到这个:
显然,在第 2,4,8 和 10 行中插入了列min
和一对 (0,0),将这些列的值向下移动。max
这只发生在这个特定的表上。如果我将其他表从 DB 导入到 RI,则得到正确的表。
如果我使用MySQL ODBC 8.0 unicode 驱动程序,它也可以与这个特定的表一起正常工作。这种行为是否有原因,使用此驱动程序时是否可以避免这种行为?
环境:
- 视窗 10
- R 版本 3.6.1 (2019-07-05))
- RODBC 1.3-16
- MariaDB 10.4.8
- MariaDB ODBC 3.1 驱动程序
更新 1: MariaODBC(版本 3.1.6)与 MariaDB 实例的所有数据库连接,而不仅仅是一个。
以下脚本比较 maria-odbc 和 mysql-odbc。
表架构/数据库codes
未连接正确的数据库。
表架构/数据库tabl
是正确的数据库。
结论 1:maria-odbc 确实连接到 MariaDB 实例的所有数据库。
结论 2:maria-odbc 在导入 R 时会损坏数据。
更新 2: MariaDB ODBC 不适用于 Excel MSQuery(MySQL ODBC 可以)。
要查看此问题是否仅与 R 或 RODBC 有关,我尝试使用 excel-odbc、mysql-odbc 和 maria-odbc(最后两个使用 MSquery)使用 Excel 导入数据。excel-odbc 和 mysql-odbc 正确提取表,maria-odbc 没有。出现以下消息:string data, right truncated。我使用了最新版本的 MariaDB ODBC (3.1.6)。
node.js - Mariadb nodejs connecor 表名占位符
我有表格“排名”和“排名前”,我想在同一个网页上显示它们。(a) 没有占位符工作的代码
(b) 使用占位符的代码给出 sql 语法错误(错误 1064)
在 where 子句中使用占位符没有任何问题
看过https://mariadb.com/kb/en/connector-nodejs-promise-api/#placeholder并用谷歌搜索但无法解决。我可以做(b)吗?出了什么问题?谢谢你。
c++ - SELECT 准备好的语句在 MariaDB 中失败并出现错误 1295
我正在尝试使用准备好的语句通过 MariaDB Connector/C 运行以下查询:
但是,mysql_stmt_execute()
返回错误代码1295
:
准备好的语句协议尚不支持此命令
下面是大概的代码:
linux - 对 mariadb::account::create() 的未定义引用
我想用 C++ 编写一个应用程序并在其中使用 MySQL 数据库。我使用了 mariadbclientpp库。所以我克隆了它并在 windows vs 2019 中编译它,它运行良好。但是当我想在 Raspbian 中执行此操作时,出现以下链接错误:
我是 Linux 的新手,所以我做了很多搜索,我尝试了一些修复,但没有一个能帮助我。我尝试了这种方法来编译我的代码:
1
2
有什么想法吗?
mysql - 即使没有流量,MariaDb-failover 也会在 CPU 上运行且很健谈
我们有一个用 scala 2.12.x 和 Play framework 2.5.x 编写的 API。API 使用 MariaDb 连接器/J 2.5.4 连接到 AWS aurora 集群jdbc:mysql:aurora://some-aurora-cluster
功能上一切正常,除了我们注意到 CPU 使用率很高,即使没有流量。一些研究表明:
上面的 cmd 显示了一些MariaDb-failover。我不确定它的作用以及为什么有多个忙于高 CPU 使用率。
有很多TIME_WAIT。这也很奇怪,因为在我执行这个 cmd 时没有流量。
有数百个TIME_WAIT;每次执行 cmd 时,数字都会发生变化。
有没有人知道这是正常的还是我需要担心的事情?
如果您还有其他问题,请告诉我。
========== 更多信息
得到PID:2655
这是内容(修剪):
十六进制 LWP 的 PID:
========== 更多信息
我们的 API 有 5 种不同的数据库配置 - 5 种不同的数据库。每个都有一个连接字符串jdbc:mysql:aurora://some-aurora-cluster
请注意,该aurora
模式用于更好地体验故障转移,因此它解释了 5 个轻量级进程。但它们很健谈,导致TIME_WAIT
CPU 使用率升高的许多原因。
以前有没有人遇到过这种情况,你是如何缓解的?我仍然想使用aurora
模式(或等效的东西),这样我们就不必在数据库故障转移时重新启动应用程序。
python-3.x - 如何在 Amazon Linux 环境中安装 Python mariadb 模块
我的目标是构建一个 AWS Lambda 层,为运行 python 3.8 的 AWS Lambda 提供 mariadb 模块。
按照这些说明,我需要在与 AWS Lambda 平台兼容的实例上安装 mariadb 模块。像这样安装模块...
...失败并显示错误消息...
我需要什么来解决这个问题?
我假设安装“MariaDB Connector/C”是先决条件?但如何做到这一点?以及如何以可以将其打包成可用于定义 AWS Lambda 层的 zip 的方式进行操作?
一些上下文
我在一个 Amazon 实例上运行了它,我认为它与 Lamba 主机相同,以显示“Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type - ami-02769748522663066”。cat /etc/os-release
返回...
不同的实例 AMI 是否更适合打包 python3.8 Lambda 层?
我用这个设置了python3(盒子里没有python 3.8):
更新和自我回答
所以简短的回答是,目前这是不可能的。MariaDb 连接器不支持亚马逊风格的 linux。但是,有一个备用 python 库 PyMySQL 将连接到 mariadb 服务器。
这是一个 python3.8 AWS Lambda 函数的内容,它为 Lambda 制造 AWS 函数层。
工厂 (AWS Lambda) 函数
在客户端,可以像这样调用(再次使用python脚本)......工厂函数函数接受python pip冻结要求并制造一个层,而不是为指定的模块提供服务。就我而言, requirements.txt 将包括 PyMySQL 。
c++ - MariaDB 连接器 C、mysql_stmt_fetch_column() 和内存损坏
我正在开发 MariaDB 连接器 C 的包装器。有一种典型情况是开发人员不知道存储在字段中的数据的长度。正如我所知道的,获得字段实际长度的方法之一是将长度缓冲区传递给mysql_stmt_bind_result,然后通过调用mysql_stmt_fetch_column来获取每一列。但我无法理解函数mysql_stmt_fetch_column是如何工作的,因为我遇到了内存损坏和应用程序中止。
这是我努力实现目标的方式
如果我将一个数组放入mysql_stmt_fetch_column,那么我将获取唯一有效的第一个字段,所有其他字段都是垃圾。如果我将单个 MYSQL_BIND 结构放入此函数,那么我将在大约第 74 个字段上中止应用程序(有趣的是它始终是这个字段)。如果我使用另一个 MYSQL_BIND 数组,那么情况与第一种情况相同。
请帮助我了解如何正确使用它!谢谢