エラー使用されたコマンドは、このMySQLバージョンでは許可されていません
一部のmysqlclientC++コードをMysql5.1から5.5に移行する際に問題が発生します(sociを使用)。C ++の部分はそれほど関連性がありません。問題は、MySQL5.5でLOADDATAINFILEを正常に実行できるmysqlclientコードを記述していることです。
これが私のメモです(LOAD DATA INFILEは失敗しますが、通常のクエリは問題ありません):
以下のコードは、Mysql 5.1、gcc 4.6.1、Oneiricで正常に動作します
同じコードがMysql5.5、gcc 4.7.2、Quantalで失敗します
mysql(コマンドラインクライアント)からDATA INFILEをロードすると、正常に動作します(my.cnfをlocal-infile = 1で更新しました)
mysql>'%local_infile%'のような変数を表示します。ONになります
これに対するSOCIまたは構成ソリューションがあれば素晴らしいのですが、誰かがこれをlibmysqlclientで動作させることができたのであれば、それも知っておくとよいでしょう...
#include <soci.h>
#include <mysql/soci-mysql.h>
#include <string>
#include <iostream>
using soci::use;
using namespace std;
using namespace soci;
main()
{
string val =
"mysql://" +
"host=127.0.0.1" +
" dbname=tmp_db" +
" user=root" +
" password=open_sasame";
int sum;
session sql( val );
sql << "SELECT 1+1", into( sum );
cerr << "RESULT=" << sum << endl; // works fine
// NEXT LINE FAILS WITH:
// The used command is not allowed with this MySQL version
sql << "LOAD DATA LOCAL INFILE '/tmp/junk3.txt' INTO TABLE tmp_db.example_tbl FIELDS TERMINATED BY '|' LINES TERMINATED BY '\\n'";
}