【问题标题】:RDS MySQL LOAD DATA LOCAL INFILE. Error 1148. The used command is not allowed with this MySQL versionRDS MySQL 加载数据本地文件。错误 1148。此 MySQL 版本不允许使用的命令
【发布时间】:2019-06-22 18:57:38
【问题描述】:

我正在尝试使用 Python pyodbc 以编程方式将数据导入 Amazon RDS MySQL 8.0.13 实例。

当我通过 SQLYog 运行以下代码时,它运行良好。

LOAD DATA LOCAL INFILE 'D:/path/to/my/files/myfile.csv' IGNORE INTO TABLE my_table
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'

但是,当我使用 MySQL Workbench 或通过 Python 在同一台机器上运行它时,我得到了错误:

错误 1148。此 MySQL 版本不允许使用的命令

我猜这与我的连接字符串或 ODBC 驱动程序有关。

谁能告诉我这个命令是否存在任何已知错误,它可以通过一个客户端 (SQLYog) 而不是另一个客户端 (MySQL Workbench / Python)。

谢谢

【问题讨论】:

    标签: python mysql mysql-workbench sqlyog


    【解决方案1】:

    好的 - 我找到了答案。

    似乎连接选项 local_infile=1 仅适用于 Python 中的某些连接。

    我仍然找不到如何为 MySQL Workbench 或 pyodbc 启用 local_infile=1,但是模块 pymysql 允许该选项。

    import pymysql
    try:
        my_conn = pymysql.connect(
            host='myserver',
            port=3306,
            db='mydatabase',
            user='myuser',
            password='somethingsecret',
            local_infile=1
        )
    
        my_cursor = my_conn.cursor()
        my_cursor.execute("LOAD DATA LOCAL INFILE 'D:/path/to/my/files/myfile.csv' IGNORE INTO TABLE my_table FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\r\\n")
        my_conn.commit()
    
    except pymysql.Error as msg:
        exit(print(msg))
    

    【讨论】:

      【解决方案2】:

      从 MySQL Workbench 运行命令时遇到了同样的问题。

      默认情况下,对于在 RDS 实例中运行的任何 MySQL 服务器,该选项设置为 1。

      也可以使用以下命令从 MySQL Workbench 中设置:

      SET GLOBAL local_infile = 1;

      无论如何,很高兴您能够在 Python 中以编程方式执行此操作。

      但是,由于 MySQL Workbench 最新版本的错误,设置此选项后无法从 MySQL Workbench 加载数据。

      How to solve Error 1148 from MySql workbench and not cmd?

      一种解决方法是从命令行传递主机名、用户名和密码连接到 MySQL 服务器。

      然后,在命令行中执行命令从 MySQL 客户端加载文件。

      LOAD DATA LOCAL INFILE 'D:/path/to/my/files/myfile.csv' IGNORE INTO TABLE my_table
      FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' 
      LINES TERMINATED BY '\r\n'

      【讨论】:

        猜你喜欢
        • 2012-09-30
        • 2013-08-28
        • 2015-10-10
        • 2020-04-28
        • 2017-04-06
        • 2017-02-01
        • 2014-11-10
        • 2015-04-17
        • 1970-01-01
        相关资源
        最近更新 更多