C++ Mysql 5.5加载数据填充权限
错误此MySQL版本不允许使用此命令 我将MySQL客户端C++代码从MySQL 5.1迁移到5.5(使用SOCI)时遇到问题。C++部分不是很相关——问题是编写一些mysql客户端代码,可以成功地在mysql 5.5上加载加载数据。 以下是我的注意事项(加载数据填充失败,但正常查询正常):C++ Mysql 5.5加载数据填充权限,c++,mysql,C++,Mysql,错误此MySQL版本不允许使用此命令 我将MySQL客户端C++代码从MySQL 5.1迁移到5.5(使用SOCI)时遇到问题。C++部分不是很相关——问题是编写一些mysql客户端代码,可以成功地在mysql 5.5上加载加载数据。 以下是我的注意事项(加载数据填充失败,但正常查询正常): 下面的代码在Mysql 5.1、gcc 4.6.1和Oneiric上运行良好 同样的代码在Mysql 5.5、gcc 4.7.2和Quantal上失败 如果我从mysql(命令行客户端)加载数据infle,
#包括
#包括
#包括
#包括
使用soci::使用;
使用名称空间std;
使用名称空间soci;
main()
{
字符串值=
“mysql://”+
“主机=127.0.0.1”+
“dbname=tmp_db”+
“用户=根用户”+
“密码=打开_sasame”;
整数和;
会话sql(val);
sql答案是,我们需要以下代码行:
mysql_options( &mysql, MYSQL_OPT_LOCAL_INFILE, 0 );
插入到mysql\u init()
和mysql\u real\u connect()
之间
下面是一段C代码供参考。请注意,SOCI的mysql后端可以使用这行代码进行修补,以使其正常工作
在Mysql 5.5、gcc 4.7.2、Quantal上测试并运行。
#include <mysql.h>
#include <stdio.h>
main()
{
MYSQL mysql;
mysql_init( &mysql );
mysql_options( &mysql, MYSQL_OPT_LOCAL_INFILE, 0 );
if ( !mysql_real_connect( &mysql,"127.0.0.1","root","open_sasame","tmp_db",0,NULL,0 ))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error( &mysql ));
}
if ( mysql_query( &mysql, "LOAD DATA LOCAL INFILE '/tmp/junk4.txt' "
"INTO TABLE tmp_db.example_tbl FIELDS TERMINATED BY '|' "
"LINES TERMINATED BY '\\n'" ))
{
fprintf( stderr, "ERROR DURING LOAD DATA LOCAL INFILE\n" );
}
mysql_close( &mysql );
}
#包括
#包括
main()
{
MYSQL;
mysql_init(&mysql);
mysql\u options(&mysql,mysql\u OPT\u LOCAL\u infle,0);
如果(!mysql\u real\u connect(&mysql,“127.0.0.1”,“root”,“open\u sasame”,“tmp\u db”,0,NULL,0))
{
fprintf(stderr,“无法连接到数据库:错误:%s\n”,
mysql_错误(&mysql));
}
if(mysql_query(&mysql,“加载数据本地填充’/tmp/junk4.txt’”)
“进入表tmp_db.example_tbl字段,以“|”结尾”
“以“\\n”结尾的行”)
{
fprintf(stderr,“加载数据本地填充时出错”);
}
mysql\u close(&mysql);
}
#include <mysql.h>
#include <stdio.h>
main()
{
MYSQL mysql;
mysql_init( &mysql );
mysql_options( &mysql, MYSQL_OPT_LOCAL_INFILE, 0 );
if ( !mysql_real_connect( &mysql,"127.0.0.1","root","open_sasame","tmp_db",0,NULL,0 ))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error( &mysql ));
}
if ( mysql_query( &mysql, "LOAD DATA LOCAL INFILE '/tmp/junk4.txt' "
"INTO TABLE tmp_db.example_tbl FIELDS TERMINATED BY '|' "
"LINES TERMINATED BY '\\n'" ))
{
fprintf( stderr, "ERROR DURING LOAD DATA LOCAL INFILE\n" );
}
mysql_close( &mysql );
}