我知道这个问题还有其他解决方案,但它对我不起作用。
我正在尝试通过 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);
根据 MySQL 文档,服务器需要配置为允许LOCAL
关键字:
LOCAL
仅当您的服务器和客户端都已配置为允许它时才有效。例如,如果 mysqld 在local_infile
禁用系统变量的情况下启动,LOCAL
则不起作用。
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
您确定您的服务器已正确配置为允许使用此关键字吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句