【问题标题】:MySQL LOAD DATA LOCAL INFILE not allowed over ODBCMySQL LOAD DATA LOCAL INFILE 不允许通过 ODBC
【发布时间】:2019-05-13 00:26:36
【问题描述】:

我正在尝试将文本文件加载到 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 连接成功连接到数据库,并且可以运行 SELECTUPDATEINSERT 等。命令没问题。

我也可以在 Windows 机器上运行LOAD DATA LOCAL INFILE 命令,使用 ODBC 连接没有问题,所以我知道问题不在服务器端。

我已尝试对 my.cnf 文件进行多次修改,但均未成功,包括此处的所有建议:

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

这里:

LOAD DATA LOCAL INFILE gives the error The used command is not allowed with this MySQL version

这两种解决方案都建议在服务器上设置 local-infile=1,但我的服务器已经有该设置。

【问题讨论】:

  • @StephenOstermiller 不,这不是完全相同的问题。原来是我的回答中详述的 ODBC 连接器问题。
  • 我不得不承认,我尝试了很多不同的东西,以至于我不记得命令行何时开始工作了。最后,我认为我有两个不同的问题(ODBC 和命令行),我认为它们是相同的。两者都与 local-infile 参数有关,但每个问题都有不同的解决方案。
  • 很公平。现在我编辑了这个问题,它是不同的。
  • 重读我的原帖后,我意识到我的要求不清楚/不准确。从命令行运行命令不是问题。它始终与 ODBC 相关。我将编辑我的原始帖子。最后,local-infile 参数是罪魁祸首。然而,修复与其他帖子略有不同。
  • 你打败了我!!谢谢@StephenOsteriller。

标签: mysql csv odbc


【解决方案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后,通过ODBC连接时LOAD DATA LOCAL INFILE成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-05
    • 2012-06-01
    • 2020-07-25
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多