gpt4 book ai didi

c++ - 将 mysql embedded 和 --local-infile=1 与 c++ 一起使用?

转载 作者:行者123 更新时间:2023-11-29 00:50:45 26 4
gpt4 key购买 nike

我正在使用 C++ 中的嵌入服务器(链接到 mysqld)连接到 mysql 数据库。我有以下代码:

static char *server_options[] = \
{ (char *)"mysql_test",
(char *)"--datadir=/home/cquiros/temp/mysql/db2",
(char *)"--default-storage-engine=MyISAM",
(char *)"--loose-innodb=0",
(char *)"--local-infile=1",
(char *)"--skip-grant-tables=1",
(char *)"--myisam-recover=FORCE",
(char *)"--key_buffer_size=16777216",
(char *)"--character-set-server=utf8",
(char *)"--collation-server=utf8_bin",
NULL };

int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;

mysql_library_init(num_elements, server_options, NULL);
m_mysql = mysql_init(NULL);

char enable_load_infile = 1;
if (mysql_options(m_mysql,MYSQL_OPT_LOCAL_INFILE, (const char *)&(enable_load_infile)))
qDebug() << "Error setting option";

mysql_real_connect(m_mysql, NULL,NULL,NULL, "database1", 0,NULL,0);

连接有效,我可以查询和创建表,但是,当我尝试执行“加载数据本地 infile ...”时,我总是得到“此 MySQL 版本不允许使用的命令”,即使我正在设置 - -local-infile=1 在服务器选项中或在代码中设置:

char enable_load_infile = 1;
if (mysql_options(m_mysql,MYSQL_OPT_LOCAL_INFILE, (const char *)&(enable_load_infile)))
qDebug() << "Error setting option";

知道我做错了什么以及如何解决吗?

非常感谢您的帮助。卡洛斯。

最佳答案

@QLands 我意识到你问这个问题已经一年多了,但我想我只是为了后代才回答,以防其他像我这样的人在谷歌上搜索解决方案。

我遇到了同样的问题,在/etc/mysql/my.cfg 文件中明确启用它后,我可以从 Linux mysql CLI 获取 LOAD DATA LOCAL INFILE 语句。但是我无法让它与 MySQL C++ 连接器一起工作——当我尝试通过 MySQL C++ 连接器运行 LOAD DATA LOCAL INFILE 命令时,我也收到错误“此 MySQL 版本不允许使用该命令”。 wtf 对吗?

经过大量勤奋的谷歌搜索并找到一些后巷技术支持帖子后,我得出结论,MySQL C++ 连接器没有(无论出于何种原因)决定为开发人员实现能够允许 local-infile= 1 个选项。显然有些人已经能够 hack/fork MySQL C++ 连接器来公开功能,但没有人发布他们的源代码——只是说它有效。显然,在您初始化连接后,MySQL C API 中有一个变通方法:

mysql_options( &mysql, MYSQL_OPT_LOCAL_INFILE, 1 );

以下是一些使我得出此结论的引用文章:

1.) How can I get the native C API connection structure from MySQL Connector/C++?

2.) Mysql 5.5 LOAD DATA INFILE Permissions

3.) http://osdir.com/ml/db.mysql.c++/2004-04/msg00097.html

基本上,如果您想要使用 LOAD DATA LOCAL INFILE 功能的能力——您必须使用 mysql C API 或从命令行执行它,或者破解/派生现有的 mysql C++ api 以公开连接结构 :(

关于c++ - 将 mysql embedded 和 --local-infile=1 与 c++ 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8647505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com