错误1148:此MySQL版本不允许使用used命令

sos*_*tee 64 mysql sql import

我正在尝试使用数据加载到mysql数据库

LOAD DATA LOCAL
INFILE A.txt
INTO DB
LINES TERMINATED BY '|';
Run Code Online (Sandbox Code Playgroud)

这个问题的主题是我得到的回应.我理解默认情况下本地数据卸载是关闭的,我必须使用命令启用它,local-infile=1但我不知道在哪里放置此命令.

ark*_*cha 91

您可以在设置客户端连接时将其指定为附加选项:

mysql -u myuser -p --local-infile somedatabase
Run Code Online (Sandbox Code Playgroud)

这是因为该功能打开了一个安全漏洞.因此,您必须以明确的方式启用它,以防您真正想要使用它.

客户端和服务器都应启用local-file选项.否则它不起作用.要为服务器端服务器上的文件启用它,请在my.cnf配置文件中添加以下内容:

loose-local-infile = 1
Run Code Online (Sandbox Code Playgroud)


Jav*_* Xu 39

我在这里找到答案.

这是因为服务器变量local_infile设置为FALSE | 0.请参阅文档.

您可以通过执行来验证:

SHOW VARIABLES LIKE 'local_infile';
Run Code Online (Sandbox Code Playgroud)

如果您具有SUPER权限,则可以通过执行以下命令启用它(无需使用新配置重新启动服务器):

SET GLOBAL local_infile = 1;
Run Code Online (Sandbox Code Playgroud)

  • 起初我想要+1,因为这是唯一的答案,成功地将local-infile变量设置为ON,但是没有修复错误. (4认同)

小智 14

带有默认 MySQL 连接器的 SpringBoot 2.1

要解决此问题,请按照说明进行操作

1.设置全局local_infile = 1;

要设置此全局变量,请按照 MySQL 文档https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html 中提供的说明进行操作

2. 更改 MySQL 连接器字符串

allowLoadLocalInfile=true 示例:jdbc:mysql://localhost:3306/xxxx?useSSL=false&useUnicode=yes&characterEncoding=UTF-8&allowLoadLocalInfile=true


Vér*_*ace 12

http://dev.mysql.com/doc/refman/5.6/en/load-data-local.html

把它放在my.cnf中 - 该[client]部分应该已经存在(如果你不太担心安全性).

[client]
loose-local-infile=1
Run Code Online (Sandbox Code Playgroud)


Ada*_*rsh 9

也遇到了这个问题,尝试使用Windows 上的MySQL Workbench将 .csv 数据从我的本地机器上传到 AWS RDS 实例。

我需要添加的内容OPT_LOCAL_INFILE=1是:连接 > 高级 > 其他。注意大写是必需的。

在 AWS Developer Forums 中找到了PeterMag 的这个答案。


欲了解更多信息:

SHOW VARIABLES LIKE 'local_infile';已经返回ON ,查询是:

LOAD DATA LOCAL INFILE 'filepath/file.csv' 
    INTO TABLE `table_name`
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS;
Run Code Online (Sandbox Code Playgroud)

从上面引用的答案来源复制:

显然这是 MYSQL Workbench V8.X 中的一个错误。除了本线程前面显示的配置,您还需要更改 Workbench 中的 MYSQL 连接,如下所示:

  1. 转到显示所有连接的 MYSQL 的欢迎页面
  2. 选择管理服务器连接(小扳手图标)
  3. 选择您的连接
  4. 选择高级选项卡
  5. 在其他框中,添加 OPT_LOCAL_INFILE=1

现在我可以在 MYSQL RDS 上使用 LOAD DATA LOCAL INFILE 查询。似乎不需要 File_priv 权限。*

  • 我正在使用工作台,这是我的问题。现在设置 OPT_LOCAL_INFILE=1 后解决 (2认同)

Dom*_*nic 8

所有这些都没有在我全新的Ubuntu 15.04上为我解决.

我删除了LOCAL并得到了这个命令:

LOAD DATA
INFILE A.txt
INTO DB
LINES TERMINATED BY '|';
Run Code Online (Sandbox Code Playgroud)

但后来我得到了:

MySQL said: File 'A.txt' not found (Errcode: 13 - Permission denied)
Run Code Online (Sandbox Code Playgroud)

这让我从尼尔森回答了另一个关于stackoverflow的问题,这个问题解决了我的问题!


小智 6

我在 AWS MySQL 8.0 RDS 中导入 CSV 文件时遇到了同样的问题。

mysql> LOAD DATA LOCAL INFILE '/tmp/your.csv' INTO TABLE test.demo2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

ERROR 1148 (42000): 此 MySQL 版本不允许使用的命令

1) 检查local_infile参数

mysql> SHOW VARIABLES LIKE 'local_infile';
Run Code Online (Sandbox Code Playgroud)

2) 从客户端注销并使用以下参数重新登录。

mysql -u root -p -h rdsendpoint --local-infile=1
Run Code Online (Sandbox Code Playgroud)

3)运行相同的命令

mysql> LOAD DATA LOCAL INFILE '/tmp/your.csv' INTO TABLE test.demo2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;


Query OK, 300 rows affected (0.01 sec)

Records: 300  Deleted: 0  Skipped: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)