关于load data local infile和数据库版本的问题

yufulou 2012-07-26 05:00:32
编了个连数据库的应用程序,用了libmysqlclient.so.15,要从客户端服务器连接数据库服务器执行“load data local infile”语句的时候,总是报“The used command is not allowed with this MySQL version”。

网上查了,可能是版本或者配置文件的问题,我在客户端机器和数据库机都装了mysql5.1.58了,然后两边配置文件的[client]中都加了local-infile=1并重启了,按说头文件和libmysqlclient.so.15应该也都更新到5.1.58版了(客户机也更新了这个so了),并且在构造函数中也加了mysql_options(&mysql, MYSQL_OPT_LOCAL_INFILE, "1");

重新编译以后,运行show variables like '%local-infile%',结果是“on”,运行“show variables like ‘%version%’”,结果也是5.1.58,
但一运行"load data local infile"还是提示这个错误,很郁闷,不知为啥,我直接通过mysql -h服务器ip 这样登陆进去执行该语句已经正常了!

所以我也还是怀疑是我编译时候的问题,有没有什么sql语句可以查看当前调用的客户端的版本的?

求各位大神帮忙~~

PS:请别说让我用mysql -e 'load data local infile'之类的,因为这个程序不止用在这里了,这样做没法根本解决问题
...全文
307 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yufulou 2012-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

难道除了select update insert delete 别的语句都不能用?
[/Quote]

谢谢您,已经搞定了,我尝试了php的mysql扩展,用了那个mysql_connect函数,查了php的文档,在该函数的flag的位置设置了CLIENT_LOCAL_FILES常量,就能在后面调用这个语句了,遂看了看文档还有mysql.h,发现了CLIENT_LOCAL_FILES这个宏,发现php扩展用在了mysql_real_connect函数的flag位置,然后我把我程序的那个flag位置“|CLIENT_LOCAL_FILES”了一下,就搞定了~

而我错误的地方是,用了mysql_options函数,因为见到他有个很像的叫“MYSQL_OPT_LOCAL_INFILE”的设置,我总在设置他,但事实上他没起到用处
rucypli 2012-07-26
  • 打赏
  • 举报
回复
难道除了select update insert delete 别的语句都不能用?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧