Yii2 加载数据本地文件

沙希德泰卡

我知道这个问题还有其他解决方案,但它对我不起作用。

我正在尝试通过 Yii2 网站在 MySQL 数据库中执行 LOAD DATA LOCAL INFILE 语句。我过去已经开始工作了,所以我不确定为什么它不再起作用了。

我收到以下错误:

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

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

'attributes' => [ PDO::MYSQL_ATTR_LOCAL_INFILE => true ],

我也尝试禁用安全文件私有无济于事。

编辑

我尝试从 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

我让它与“加载数据输入文件”一起工作......

...但它不适用于“LOAD DATA LOCAL INFILE”

这是我使用的代码...

$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);
抢夺006

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

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

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章