【问题标题】:phpmyadmin import & overwrite tablephpmyadmin 导入和覆盖表
【发布时间】:2021-11-10 09:52:37
【问题描述】:

这已经困扰我好几个星期了,我找不到合适的解决方案。 我正在运行 VPS centos 7(和没有相关性的aapanel) php 7.4 mysql 5.7 phpmyadmin 5.0

我进入 phpmyadmin,导出了一个表,更新了 5000 行,我想将旧数据导入并覆盖到同一个表中。 'browse' 和 import 不是一个选项(因为 vps 错误 503/low ram 要加载),所以我尝试通过 SQL 选项卡添加它:

LOAD DATA LOCAL INFILE '/database/links.csv' 
INTO TABLE links 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n';

权限被拒绝

*是的,我添加了

[MySQLi]
mysqli.allow_local_infile = On 

到 my.conf 甚至尝试添加到 php.ini 并重新启动 apache,甚至尝试删除 LOCAL(在堆栈上也看到了)但无济于事*

有没有人有更新版本,或者知道解决这个烦人的可靠方法,但应该是简单的解决方案?

编辑

root 用户 = 修复了权限被拒绝的问题...但是...

加载数据文件

错误 #1290 - MySQL 服务器正在使用 --secure-file-priv 选项运行,因此它无法执行此语句

--secure-file-priv 已从 my.conf 中删除,apache 已重新启动,但仍然出现错误

加载数据本地文件

错误 #2000 - LOAD DATA LOCAL INFILE 被禁止,检查 mysqli.allow_local_infile

mysqli.allow_local_infile = On 仍在 my.conf 中

文件具有完全权限(777) 并尝试更改所有者 (www/root/mysql)

【问题讨论】:

  • 服务器上links.csv完整路径是什么?你可能在LOAD DATA LOCAL INFILE '...'中有错误路径
  • 我编辑了我的帖子,但路径是正确的,因为 /database/ 在根目录中

标签: php mysql database phpmyadmin


【解决方案1】:

仔细阅读LOCAL 和非LOCAL 版本之间的区别LOAD DATA 命令:https://dev.mysql.com/doc/refman/5.7/en/load-data.html#load-data-local

对于非LOCAL 版本的命令,您需要检查secure_file_priv 配置变量的状态:

mysql> select @@secure_file_priv;
+-----------------------+
| @@secure_file_priv    |
+-----------------------+
| /var/lib/mysql-files/ |
+-----------------------+

文件必须位于此处。

对于LOCAL 版本的命令,您必须检查客户端读取此类文件的权限。如果是 phpmyadmin,它将是 php 作为客户端

在这两种情况下,请仔细检查 mysql 服务器或 php 是否都有足够的权限进入目录读取文件。最简单的方法是用系统用户登录mysql或php,然后尝试读取文件:

sudo -u mysql_or_php_user /bin/bash

su -s /bin/bash mysql_or_php_user

然后

head /database/links.csv

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2015-01-12
    • 2012-08-25
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多