mysql - 命令有什么问题?
问题描述
错误 1148 (42000):此 MySQL 版本不允许使用的命令。
执行加载数据查询时出现上述错误。我无法检测到查询中有什么问题。
请帮忙。谢谢。
创建表 SQL
DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (
field1 char(8) NOT NULL,
field2 varchar(10) NOT NULL,
field3 varchar(4) NOT NULL,
field4 varchar(100),
field5 text,
field6 char(8),
field7 char(1)
) CHARACTER SET UTF8MB4;
加载表sql
load data local infile 'E:/insert/table1.RRF' into table table1 fields terminated by '|' lines terminated by '\r\n'
(@field1,@field2,@field2,@field4,@field5,@field6,@field7)
SET field1 = @field1,
field2 = @field2,
field2 = @field2,
field4 = NULLIF(@field4,''),
field5 = NULLIF(@field5,''),
field6 = NULLIF(@field6,''),
field7 = NULLIF(@field7,'');
编辑 1: MySQL 中 local_infile 的变量设置为 ON
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
解决方案
错误 1148 (42000):此 MySQL 版本不允许使用的命令。
一般来说,这意味着secure_file_priv
服务器设置被禁用(设置为 NULL)或设置为某个明确的目录(不是空字符串)。
如果它被禁用,则LOAD DATA INFILE
在启用此设置之前不可用(需要重新启动服务器)。
如果它设置为某个目录,则加载的文件必须强烈地存在于该目录中。
load data local infile 'E:/insert/table1.RRF'
如果E:
是本地设备/卷则LOCAL
没有意义。
LOCAL
关键字的意思是“在加载之前将远程文件复制到本地临时文件夹” - 所以它只对远程文件有意义。
仅当secure_file_priv
启用并设置为空字符串时才适用。
推荐阅读
- php - 如何组织一个不寻常的连接 OneToOne Doctrine2
- xml - 过滤所有月份特定日期的事件日期 xsd
- kentico - 如何使用 Kentico Rest API 将联系人添加到联系人组?
- python - 如何将批量数据发布到弹性搜索?
- mysql - Laravel 5.7 中修改的用户注册停止工作(字段'last_name'没有默认值,但数据完整)
- azure-devops - 不遵守 Azure Pipelines 任务超时
- python - 是否可以从虚拟环境中运行 jupyter
- python - 如何从具有浮点值的二维 numpy 数组中删除 NaN,结果类型应该是数组?
- java - 有没有办法让B
, A 的子类 , 被转换为 A ? - ubuntu-14.04 - 如何将 ubuntu 服务器 14.04 LTS 升级到 18.04 LTS?