windows下MySQL8中LOAD DATA INFILE出现The used command is not allowed with this MySQL version问题

前一阵子新电脑安装sql弄了半天才给弄好,执行mysql闪退然后服务起不了,起因是我想用sql命令将容量大的csv导入表中,谁知道执行命令就报错,然后出现闪退服务问题,最终结果是local_infile在off的状态,还好能确定问题所在
运行Load data local infile命令时:
ERROR 1148 (42000): The used command is not allowed with this MySQL version

这是因为:
服务器端,local_infile默认开启;客户端,local_infile默认关闭,因此用的时候需要打开。

mysql> show global variables like 'local_infile';

mysql> set global local_infile = 'ON';

然后再试试Load data,本人仍旧出错还是:
因而退出mysql,执行quit或exit,然后到bin目录用如下命令登录mysql:
mysql --local-infile=1 -u root -p

错误小结:

Issue1:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

错误语句:mysql> LOAD DATA LOCAL INFILE '/var/lib/mysql/pet.txt' INTO TABLE tbl_pet;

出错原因:多了一个LOCAL关键词。当文件在客户机端时要写LOCAL,在服务器端时不用写。我的txt文件是和MySQL数据库在同一虚拟机上的,所以不用加LOCAL。

Issue2:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

出错原因:MySQL设置了secure-file-priv属性对应的路径,当数据文件从其他路径导入时便会报错。

解决办法:查看secure-file-priv指定路径并把数据文件放进去。参考https://blog.csdn.net/FallingU/article/details/75675220

Issue3:ERROR 1292 (22007): Incorrect date value: ‘’ for column ‘death’ at row 1

出错原因:一开始直接把原始表格里的数据复制到txt文件里没有处理,空值的地方是空的,不符合MySQL里空值的表示方式,所以报错。

解决办法:将空值用\N代替。参考https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

Issue4:使用 LOAD DATA INFILE ‘/var/lib/mysql-files/pet.txt’ INTO TABLE tbl_pet; 导入数据仍然失败

错误提示:' for column 'death' at row 1 date value: 'N

出错原因:fields terminated by 默认值是’\t’,lines terminated by 默认值是’\n’,而Windows上的文件换行是’\r\n’,Mac OS X是’\r’。

解决办法:加上LINES TERMINATED BY ‘\r\n’,如下:
LOAD DATA INFILE '/var/lib/mysql-files/pet.txt' INTO TABLE tbl_pet LINES TERMINATED BY '\r\n';

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容