Php Yii2加载数据本地填充

Php Yii2加载数据本地填充,php,mysql,yii2,mysql-workbench,load-data-infile,Php,Mysql,Yii2,Mysql Workbench,Load Data Infile,我知道这个问题还有其他解决办法,但对我来说并不奏效 我试图通过Yii2网站在MySQL数据库中执行LOAD DATA LOCAL INFLE语句。我在过去一直在使用它,所以我不知道为什么它不再工作了 我得到以下错误: SQLSTATE[42000]:语法错误或访问冲突:1148已使用 此MySQL版本不允许使用命令 我的db.php配置文件中有以下设置 'attributes' => [ PDO::MYSQL_ATTR_LOCAL_INFILE => true ], 我还尝试禁用安

我知道这个问题还有其他解决办法,但对我来说并不奏效

我试图通过Yii2网站在MySQL数据库中执行LOAD DATA LOCAL INFLE语句。我在过去一直在使用它,所以我不知道为什么它不再工作了

我得到以下错误:

SQLSTATE[42000]:语法错误或访问冲突:1148已使用 此MySQL版本不允许使用命令

我的db.php配置文件中有以下设置

'attributes' => [ PDO::MYSQL_ATTR_LOCAL_INFILE => true ],
我还尝试禁用安全文件priv,但没有成功

编辑

我尝试从Workbench运行以下查询,它也通过Workbench抛出一个错误。但是,它可以在MySQL 5.7上运行。我目前正在使用8.0

LOAD DATA LOCAL INFILE 'D:/Temp/6_attlog.dat' IGNORE
INTO TABLE att_log
FIELDS TERMINATED BY '\t' ENCLOSED BY '''' LINES TERMINATED BY '\r\n' IGNORE 0 LINES 
(@id, `date_time`, `dev_id`, `mode`, `work_code`, `work_code1`) SET `id` = TRIM(@id)
编辑2

我让它与“加载数据填充”一起工作

…但它不适用于“加载数据LOCALinfle”

这是我使用的代码

$inFile = str_replace('\\', '/', realpath('uploads/'.$model->file->name));
Yii::$app->db->createCommand('
    LOAD DATA LOCAL 
    INFILE \''.$inFile.'\' IGNORE 
    INTO TABLE att_log 
    FIELDS TERMINATED BY \'\\t\'  
    ENCLOSED BY \'\'\'\' 
    LINES TERMINATED BY \'\r\n\' 
    IGNORE 0 LINES 
    (@id, `date_time`, `dev_id`, `mode`, `work_code`, `work_code1`) 
    SET `id` = TRIM(@id)
')->execute();
unlink($inFile);
只是一个建议

在PHP中,您可以使用单引号和双引号,以便以更简单、更清晰的方式构建命令,例如:

  $inFile = str_replace('\\', '/', realpath('uploads/'.$model->file->name));
  Yii::$app->db->createCommand("
      LOAD DATA LOCAL 
      INFILE '".$inFile."' IGNORE 
      INTO TABLE att_log 
      FIELDS TERMINATED BY '\t'  
      ENCLOSED BY '\' 
      LINES TERMINATED BY '\r\n\' 
      IGNORE 0 LINES 
      (@id, `date_time`, `dev_id`, `mode`, `work_code`, `work_code1`) 
      SET `id` = TRIM(@id)
  ")->execute();
  unlink($inFile);

根据MySQL文档,服务器需要配置为允许
LOCAL
关键字:

LOCAL
仅当您的服务器和客户端都已配置为允许时才起作用。例如,如果mysqld是在禁用系统变量的情况下启动的,
LOCAL
不起作用


您确定您的服务器已正确配置为允许使用此关键字吗?

显示您输入代码的代码,并显示您为此使用的代码。@scaisEdge我添加了我的代码