gpt4 book ai didi

php - Yii2 加载数据本地 INFILE

转载 作者:行者123 更新时间:2023-11-29 17:20:21 24 4
gpt4 key购买 nike

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

我正在尝试通过 Yii2 网站在 MySQL 数据库中执行 LOAD DATA LOCAL INFILE 语句。我过去曾这样做过,所以我不确定为什么它不再工作了。

我收到以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version

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

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

我也尝试禁用 secure-file-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

我让它与“LOAD DATA INFILE”一起工作...

...但它不适用于“加载数据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);

最佳答案

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

LOCAL works only if your server and your client both have been configured to permit it. For example, if mysqld was started with the local_infile system variable disabled, LOCAL does not work.

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

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

关于php - Yii2 加载数据本地 INFILE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com