Câu trả lời là, chúng ta cần dòng mã sau:
mysql_options( &mysql, MYSQL_OPT_LOCAL_INFILE, 0 );
được chèn vào giữa mysql_init()
và mysql_real_connect()
.
Dưới đây là một đoạn mã C để tham khảo. Lưu ý rằng chương trình phụ trợ mysql của SOCI có thể được vá bằng dòng mã này để nó hoạt động.
Đã thử nghiệm và hoạt động trên 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 );
}