c++ 使用mysql加载数据infile相对路径错误

sycxhyv7  于 2023-02-26  发布在  Mysql
关注(0)|答案(2)|浏览(413)
LINUX MYSQL C API
MYSQL SERVER VERSION IS:5.1.9         
MYSQL CLIENT API VERSION:6.0.2

错误为
Can't get stat of '/usr/local/mysql/var/NetCenter_Cache/FileCahce_HttpDown.Dat' (Errcode: 2),内容: LOAD DATA INFILE './NetCenter_Cache/FileCahce_HttpDown.Dat' INTO TABLE data_httpdown_2013-07-24 ( probe_id , src_mac , dst_mac , src_ip , dst_ip , src_name , dst_name , dst_equip_type , dst_app_id , ip_version , ip_tunnel , src_port , dst_port , proto_type , proto_sub_type , operation , log_type , log_level , opstatus , rule_id , group_id , rulekeyword , domain , url , summary , content , file_name , log_time , str_time )
此路径为错误:

/usr/local/mysql/var/NetCenter_Cache/FileCahce_HttpDown.Dat

我使用的是相对路径

./NetCenter_Cache/FileCahce_HttpDown.Dat

路径被指向

/usr/local/netaudit/NetCenter_Service/NetCenter_Release/NetCenter_Cache

为什么要改变呢?我使用绝对路径没有问题

5fjcxozz

5fjcxozz1#

这是因为LOAD DATA是由服务器进程(而不是客户机)执行的,MySql守护进程的当前目录是

/usr/local/mysql/var/

因此,请使用数据文件的绝对路径,或者如果出于某种原因(我无法想象任何原因),您希望它是相对路径,则可以从

`/usr/local/mysql/var/`

而不是来自

`/usr/local/netaudit/NetCenter_Service/NetCenter_Release/`
w1jd8yoj

w1jd8yoj2#

十年后,从MySQL版本8开始,LOAD DATA语句有一个可选的LOCAL修饰符,可以完成您所要求的任务。
https://dev.mysql.com/doc/refman/8.0/en/load-data.html

相关问题