问题标签 [libmysql]

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.

0 投票
1 回答
1097 浏览

c++ - mysql_init() 总是返回 null

我有这个非常短的程序。出于某种原因,mysql_init 总是为我返回 null。根据文档,如果内存不足,就会发生这种情况。怎么会这样?就是这几行代码。

我使用 Visual Studio 2015 和来自 mariadb-10.1.8-win32.zip 的库。

编辑:我让它工作了一点。我在 Visual Studio 中使用调试设置进行编译并链接到 libmysqld.lib。我还将 libmysqld.dll 复制到工作目录中。这导致了我上面描述的效果。我试图链接到 libmysql.lib 并将 libmysql.dll 复制到工作目录并且有效。我不打算调试 mysql 代码,所以我可以忍受。尽管为什么调试库不适用于相同的代码,但仍然很奇怪。

0 投票
0 回答
34 浏览

mysql - 我如何检测到不是我创建的线程已完成?(调用mysql_thread_end)

我对mysql客户端库的设计有疑问。

MySQL 要求每个使用 MySQL API 的线程首先调用mysql_thread_init() ,最后调用 mysql_thread_end()。 如果线程调用 mysql_thread_end() 失败,那么 MySQL 将在程序终止时阻塞主线程并等待该线程调用 mysql_thread_end()。如果这没有发生,那么它会向 STDERR 打印一条错误消息。不是一个非常用户友好的行为。

现在的问题是我在 ISAPI dll 中,不是我创建线程(也不是破坏它),是 IIS 管理它。

我怎么能被警告然后线程将结束调用mysql_thread_end

0 投票
1 回答
312 浏览

mysql - How to get mysql to throw an error on update for no rows matched?

I want to know when an UPDATE query reports 0 rows matches. I'm using libmysql.

Here's the code I'm using:

Essentially what I need to know is whether or not there is a match for id. I know I can check that by doing a select, but is there another way?

0 投票
1 回答
1037 浏览

cmake - CMake 链接到导入库

我需要将我的项目链接到libmysql.dll动态库(我需要这样做,因为我将我的项目构建为 /MDd,参考:https ://dev.mysql.com/doc/refman/5.6/en/ c-api-building-clients.html )

现在棘手的部分是它是一个导入库(参考:https ://msdn.microsoft.com/en-us/library/d14wsce5.aspx )所以还有一个libmysql.lib

我正在使用 CMake 进行构建:

CMake 找到库libmysql.lib但是当我尝试编译时出现以下链接器错误:

如上所示,mysql是包含libmysql.lib路径的 CMake 变量的名称。

我试图直接链接到 .dll 但它也不起作用,CMake 找不到 .dll。

问题

我应该如何在 CMake 中继续链接到导入库?谢谢你的帮助。

0 投票
1 回答
159 浏览

c++ - 使用 mysql 库找不到 -libmysql 或使用 -mysqllib 的 undefinder 引用

无法找到-libmysql或取消查找参考-mysqllib

嗨,我在使用代码块定期连接数据库时遇到问题。If Include -libmysql -Cannot find, 和if -mysqllib - undefinder reference. 我还添加了一个文件夹 lib 并包含在他们的位置,请帮助。

在此处输入图像描述

0 投票
1 回答
551 浏览

c++ - 使用嵌入式 mysql C++ 创建触发器

我正在使用 Windows 上的 C++ 应用程序中的 libmysqld c 库,以便与嵌入式 mysql 服务器交互,即在嵌入它的进程的生命周期内在线的 mysql 服务器。创建数据库的应用程序使用 mysql .ini 文件来创建相对于应用程序目录的 datadir,而不是在全局 mysql 安装文件夹中,例如

我可以毫无问题地以编程方式创建触发器,例如

然而,我遇到的问题是,当调用触发器时,mysql 会抱怨 mysql.proc 表不存在,因为我的应用程序特定数据目录中没有 mysql 数据库。我曾尝试从 C:\Program Files\MySQL... 的安装目录中复制 mysql 文件夹,但后来我遇到了 mysql 报告的问题

我看到的与上述错误相关的唯一建议是运行“mysql_upgrade”命令,该命令似乎不适用于使用自己的数据目录的嵌入式数据库。我正在创建所有表并设置它们各自的触发器,但无法解决这个 mysql.proc 错误。

更新:

我在这里也看到了一些不一致的行为。我的 MySQL 版本是“mysql-5.5.16-win32”,它带有一个 mysql_embedded.exe 二进制文件,我可以用它来打开一个控制台并指向我的应用程序未运行时生成的数据库文件。当我在 mysql_embedded.exe 中执行操作时,触发器可以正常工作(没有“mysql.proc 可能已损坏”错误)。所以似乎只有 libmysqld c api 与 mysql 系统表有问题。

0 投票
1 回答
185 浏览

linux - 如何在 libwebsocket 编码中包含 libmysql?

我正在尝试使用 libwebsocket 来构建我的 WebSocket 服务器,我需要在我的代码中使用 libmysql。我已经安装了 libmysql 并且能够使用它,但我不知道如何在 CMakeList.txt 中使用 cmake 将它包含在内

我已将其包含在我的 test-server.h 中

在我的 CMakeList.txt 中,我添加了这个

当我使用“make”来制作文件时,我收到了错误消息

这是 CMakeList.txt 的原始代码 https://github.com/warmcat/libwebsockets/blob/master/CMakeLists.txt

CMakeList.txt 由 libwebsocket 提供,我尝试使用以下代码对其进行编辑:

为什么我不能链接图书馆?为了在我的 libwebsocket 服务器代码中使用 libmysql,我应该怎么做?我正在使用 ubuntu 14.04 作为操作系统。

0 投票
1 回答
584 浏览

mysql - 使用 libmysqlclient C API 设置 collat​​ion_connection

我正在使用 libmysqlclient 编写一个 C 程序来将数据(令人惊讶地)插入到数据库中。代码插入的的字符集及其排序规则是:

在我的 C 程序mysql_set_character_set()中,我用来更改字符集;问题是这个函数只改变字符集而不是排序规则。如果我使用结果查询字符集和排序规则mysql_get_character_set_info是:

根据MySQL 文档

SET NAMES 指示客户端将使用什么字符集将 SQL 语句发送到服务器。因此,SET NAMES 'cp1251' 告诉服务器,“来自该客户端的未来传入消息在字符集 cp1251 中。” 它还指定服务器用于将结果发送回客户端的字符集。

所以我决定使用mysql_optionsand更改连接排序规则MYSQL_INIT_COMMAND

生成的函数调用如下所示(我之前调用过mysql_real_connect()):

但似乎此命令无法更改字符集和排序规则!因为现在如果我使用结果查询字符集mysql_get_character_set_info()是:

这里有趣的是,在 MySQL 端,如果我启用日志并使用执行MYSQL_INIT_COMMAND命令执行程序!但是mysql_get_character_set_info()没有显示这个!再次根据 libmysql 的文档:

int mysql_set_character_set(MYSQL *mysql, const char *csname)

该函数用于设置当前连接的默认字符集。字符串 csname 指定一个有效的字符集名称。连接排序规则成为字符集的默认排序规则。该函数的作用类似于 SET NAMES 语句,但也会设置 mysql->charset 的值,从而影响 mysql_real_escape_string() 使用的字符集

我想以一种受到影响的方式更改字符集和排序规则。mysql_real_escape_string()这样做的正确方法是什么?

0 投票
1 回答
372 浏览

c++ - mysql_ping 导致 SIGSEGV

我使用 c++ 和 mysql++ 库。我在每个线程上有单独的 mysqlpp::Connection 对象。所有 mysqlpp 选项都是默认的(ReconnectOption 被禁用)。每个线程都与 MariaDB 服务器保持持久连接。在一系列 SQL 查询之前,我进行以下检查:

此代码很少产生以下 SIGSEGV:

我试图通过在无限循环中运行带有 ping/connect 调用的测试程序来重现此错误。在执行期间,我手动重新启动了 MariaDB 服务器。但是我没有成功复制。您有任何解决方法的想法吗?谢谢你。

操作系统:Ubuntu 64 位

0 投票
1 回答
204 浏览

c - MySQL connector(libmysql/C) is very slow in get RES

"select * from tables" query in MySQL connector/libmysql C is very slow in getting the results:

Query process cost

Here is my code in C :