Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Mysql 5.5加载数据填充权限_C++_Mysql - Fatal编程技术网

C++ 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,

错误此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,它可以正常工作(我已经用localinfle=1更新了my.cnf)

  • mysql>显示变量,如“%local_infle%”;结果

  • 如果有一个SOCI或配置解决方案来解决这个问题,那就太好了,但是如果有人已经设法让它与libmysqlclient一起工作,那么知道这一点也太好了


    #包括
    #包括
    #包括
    #包括
    使用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 );
    }