【发布时间】:2015-12-24 13:09:19
【问题描述】:
我正在寻找备份 MySQL 数据库。当在命令行中输入以下命令时,它会起作用:
SELECT * INTO OUTFILE 'backup.txt' FROM table_name;
backup.txt 文件已创建。一切都很好。
当上述命令通过 php 文件中的 MySQL 查询提交时:
mysql_query("SELECT * INTO OUTFILE 'backup.txt' FROM table_name");
它不起作用。 backup.txt 文件未创建。
接下来,查看权限并使用命令行输入以下命令:
GRANT FILE ON *.* TO 'root'@'localhost';
此命令已被接受,但 MySQL 查询仍然不起作用。
完整的php文件如下图:
// connect to db host
//mysql_connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD)
$connection = mysql_connect("localhost", "mysql -u root", "")
or die('Could not connect: ' . mysql_error($connection));
// select db
$db = mysql_select_db("test", $connection);
// change privileges
mysql_query("GRANT FILE ON *.* TO 'root'@'localhost'");
// create query
$query = "SELECT * INTO OUTFILE 'backup.txt' FROM table_name";
//perform query
mysql_query($query);
// close mysql connection
mysql_close($connection);
谁能解释这里发生了什么以及我如何让 MySQL 查询工作并创建输出文件 backup.txt。
正在使用 Windows 机器上的 WampServer。
【问题讨论】:
-
问题顶部的 A 和 B 中使用的凭据是什么,涉及 1221 块之前的部分
-
你没有向我们展示mysql_query前后的代码
-
感谢您的帮助。问题已解决。我一直在使用“mysql -u root”作为用户名。在“select * into outfile ...”之前,我的所有数据库查询都可以正常工作。通过将用户名更改为“root”,它现在可以工作了。事实有时比小说更离奇。