MySQL load data local infile 关于ERROR 1148 (42000): The used command is not allowed with this MySQ...

Dear 丶 2021-11-16 21:34 379阅读 0赞

转载 https://www.jianshu.com/p/413719cfdeb1

今天下午尝试着用load data local infile方法将本地文件导入到MySQL里面,然后程序报了一下错误
ERROR 1148 (42000): The used command is not allowed with this MySQL version
网上查了下,是因为local_infile这个功能默认是禁止(local_infile=0,启动的话要改为1)的,需要把这个功能打开,网上有很多方法,这边说一下我能成功导入的方法:
第一步在my.ini文件中添加语句loose-local-infile=1
第二步运行的时候设置全局变量 set global local_infile=1
第一步的具体做法:
首先找到my.ini这个文件,可以在服务那边找,右击MySQL,点击属性

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNTc4MTYyNS0zYTA2ZmFjNzg5NTBhNjY5LnBuZz9pbWFnZU1vZ3IyL2F1dG8tb3JpZW50L3N0cmlwJTdDaW1hZ2VWaWV3Mi8yL3cvMTAwMC9mb3JtYXQvd2VicA

image.png

我的my.ini文件在F盘,一般在C盘的program data文件里面(这个文件夹是隐藏的,需要手动显示)
然后添加loose-local-infile=1,这个ini文件可以用记事本打开

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNTc4MTYyNS1kNzc4M2Y0ODEyN2YzMzdiLnBuZz9pbWFnZU1vZ3IyL2F1dG8tb3JpZW50L3N0cmlwJTdDaW1hZ2VWaWV3Mi8yL3cvNzIwL2Zvcm1hdC93ZWJw

image.png

保存就可以了,为了保险起见,我重新进了下命令行。
第二步设置全局变量:
在命令行输入
set global local_infile=1,运行;
然后查询local_infile参数,已经on了;

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNTc4MTYyNS1iYmI5M2UyYzY4NzkyZmU4LnBuZz9pbWFnZU1vZ3IyL2F1dG8tb3JpZW50L3N0cmlwJTdDaW1hZ2VWaWV3Mi8yL3cvNzUxL2Zvcm1hdC93ZWJw

image.png

最后倒入csv数据文件,导入成功。

aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNTc4MTYyNS01NTkxOTc3N2JmYjJjZDY3LnBuZz9pbWFnZU1vZ3IyL2F1dG8tb3JpZW50L3N0cmlwJTdDaW1hZ2VWaWV3Mi8yL3cvMTAwMC9mb3JtYXQvd2VicA

image.png

其中,fields terminated by ‘,’表示用逗号分隔,因为csv文件是用逗号分隔的。
:经过测试,只做两步中的其中一步,都会报1148的错误。
呼!写起来没多少,这个问题搞了一下午,之前一直以为loose-local-infile=1这个语句是要在命令行运行的,大部分时间都在想在哪运行。。。很无语的碎碎念一番。
第二天重新load data local infile的时候,又出现了1148 的错误,需要重新设置全局变量,好吧,看来每次关了之后再打开都得重新设置变量,反正local_infile参数是on的话应该就可以了。

发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读