一般是因为my.ini的“secure-file-priv”的设置导致loaddata失败,网上查了许多资料,大部分都是要求注释掉my.ini的:
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.6/Uploads
mysql5.7没有my.ini,只有mydefault.ini,复制改一个就ok了。
注释完不起效果,于是stack-over-flow上查看到这样一个解决方案:
http://stackoverflow.com/questions/32737478/mysql-how-to-tackle-secure-file-priv
用命令SHOW VARIABLES LIKE "secure_file_priv";查看一下uploads设置,结果uploads文件夹压根不存在,手动创建之。
loadfile尝试仍然失败。
于是想重启mysql服务,net stop后发现mysql服务压根没起来,net start mysql提示无法启动,服务器没有报告任何错误。
这种情况一般是缺少data目录,那就进入到mysql5.7的bin目录,用mysqld --initialize重建之,出现错误,提示data目录中有文件存在,可是我mysql5.7目录下没有文件存在啊?这种问题网上压根找不到答案,抓耳挠腮找了半天也不知道错误在哪,
突然发现my.ini中有个设置:datadir=D:/MySql/data # 设置mysql数据库的数据的存放目录,必须是data,或者是//xxx/data
寻思有没有可能是my.ini捣鬼,于是把my.ini改了个名字,再次mysqld --initialize,data目录初始化成功。
net start mysql
再次报错,无服务器没有提示任何错误
于是用mysqld --console查看详细信息,提示有服务占用了3306端口
进到系统服务里挨个看,发现有个服务名为mysql5.7,关闭掉
再次net start mysql,启动成功。
把my.ini名字改回来,顺利导入数据到表中,至此问题解决。