我想在csv文件中输出表数据。
$query = new QUERY();
$clause = "SELECT * FROM $table WHERE company_id='$company_id'
INTO OUTFILE 'file_name.csv'
FIELDS ENCLOSED BY ''"' TERMINATED BY ';' ESCAPED BY ''"'
LINES TERMINATED BY ''r'n'";
$query->run($clause);
错误:
exception 'PDOException' with message 'SQLSTATE[28000]:
Invalid authorization specification: 1045 Access denied for user
'my_username'@'%' (using password: YES)' in
D:'home'site'wwwroot'application'libraries'query.php:426
这是怎么回事?如何在csv文件中导入数据并将其放置在服务器上?
编辑:
Stack trace:
#0 D:'home'site'wwwroot'application'libraries'query.php(426): PDOStatement->execute(Array)
#1 D:'home'site'wwwroot'application'libraries'query.php(470): QUERY->RUN_QUERY('SELECT * FROM a...', Array)
#2 D:'home'site'wwwroot'application'controllers'manage_clients.php(116): QUERY->run('SELECT * FROM a...')
#3 [internal function]: Manage_clients->delete_company()
#4 D:'home'site'wwwroot'system'core'CodeIgniter.php(359): call_user_func_array(Array, Array)
#5 D:'home'site'wwwroot'index.php(203): require_once('D:''home''site''ww...')
#6 {main}
显然,
Invalid authorization, Access denied for user 'my_username'@'%'
因此,请检查您的凭据,即您的usernam和pwd是否匹配,以及您使用的IP是否接受了两者。
编辑:如果所有其他查询都运行良好,也许它们来自另一个来源,比如另一台服务器?我突然想到的一件事是,你可能没有权限编写outfile本身,但我想知道是否会有另一条错误消息。也许您的用户无权使用OUTFILE命令?
确保您的用户拥有正确的权限。运行这些查询以设置权限,然后运行第二个查询以向用户授予文件。授予所有权限并不会产生文件,所以需要单独执行。
grant all privileges on your_database.* to 'asdfsdf'@'localhost' identified by 'your_password';
flush privileges;
grant file on *.* to 'asdfsdf'@'localhost';
您可以运行show grants;
来查看已授予用户的权限。
另一种方法是:
service mysql restart --skip-networking --skip-grant-tables
mysql <enter>
update mysql.user set File_priv = 'Y' where user='gs' and host='localhost';
exit
service mysql restart