mysql - MySQL LOAD DATA LOCAL INFILE 不允许通过 ODBC
问题描述
我正在尝试将文本文件加载到 MySQL 表中。我收到的错误是:
HY000 1148 [MySQL][ODBC 8.0(w) Driver][mysqld-5.6.39]此MySQL版本不允许使用的命令
我的操作系统是 Ubuntu 16.04.4 LTS,客户端 MySQL 版本是 5.7.24。MySQL db 服务器位于运行 MySQL 5.6.39 的 AWS RDS 实例上
我尝试使用 ODBC 运行此命令:
LOAD DATA LOCAL INFILE 'abc.txt' INTO TABLE tblname FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n';
我可以使用命令行和 ODBC 连接成功连接到数据库,并且可以运行SELECT
、UPDATE
、INSERT
等。命令没有问题。
我也可以LOAD DATA LOCAL INFILE
使用 ODBC 连接从 Windows 机器上运行命令而没有问题,所以我知道问题不在服务器端。
我已尝试对 my.cnf 文件进行多次修改,但均未成功,包括此处的所有建议:
和这里:
LOAD DATA LOCAL INFILE 给出错误 The used command is not allowed with this MySQL version
这两种解决方案都建议在服务器上设置 local-infile=1,但我的服务器已经有了该设置。
解决方案
这个问题原来是一个 ODBC 连接器问题。
我使用的 MySQL ODBC 连接器版本是 8.0.11,它覆盖了 local-infile 参数并将其设置为零。在此版本的连接器中,参数不可编辑(据我所知)。
从版本 8.0.14 开始,用户可以将以下行添加到 odbc.ini 文件中:
ENABLE_LOCAL_INFILE=1
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html
升级到新的连接器并更新 odbc.ini 后,LOAD DATA LOCAL INFILE
通过 ODBC 连接时成功。
推荐阅读
- vb.net - Linq group join failing, if the result has empty rows
- javascript - 如何在google主页上展开google logo?
- python - python类型注释的参数化联合
- java - ScheduledExecutorService 每次循环后调用方法
- python - (Python Schedule) Change the times a scheduled event runs based on a csv file
- android - 通过 URL 从 JSON 数据中获取数据并使用列表视图或回收器视图将其显示在 android 应用程序中
- maven - Maven doesn't recognize jaxws-ri version
- mysql - Kusto KQL 相当于 mysql 中的 string_agg
- azure - Shell script to check if the azcopy command to upload the files from linux to azure storage is successful or not
- r - 如何将 hclust 对象绘制到一定数量的切割?