Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库错误:1(HY000):无法创建/写入文件“2015-04-06 20:48:33.418000”。csv(错误代码:13-权限被拒绝)_Mysql_Python 2.7_Csv_Wamp_Mysql Connector Python - Fatal编程技术网

Mysql 数据库错误:1(HY000):无法创建/写入文件“2015-04-06 20:48:33.418000”。csv(错误代码:13-权限被拒绝)

Mysql 数据库错误:1(HY000):无法创建/写入文件“2015-04-06 20:48:33.418000”。csv(错误代码:13-权限被拒绝),mysql,python-2.7,csv,wamp,mysql-connector-python,Mysql,Python 2.7,Csv,Wamp,Mysql Connector Python,我正在用Python设计一个应用程序,并试图写入CSV文件,但遇到以下错误: 数据库错误:1 HY000:无法创建/写入文件“2015-04-06 20:48:33.418000”。csv错误代码:13-权限被拒绝 守则: def generate_report(self): conn=mysql.connector.connect(user='root',password='',host='localhost',database='mydatabase')

我正在用Python设计一个应用程序,并试图写入CSV文件,但遇到以下错误:

数据库错误:1 HY000:无法创建/写入文件“2015-04-06 20:48:33.418000”。csv错误代码:13-权限被拒绝

守则:

def generate_report(self):
        conn=mysql.connector.connect(user='root',password='',host='localhost',database='mydatabase')     
        exe2 = conn.cursor()
        exe2.execute("""SELECT tbl_site.Site_name, State_Code, Country_Code,Street_Address, instrum_start_date, instrum_end_date, Comment INTO OUTFILE  %s FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n'FROM tbl_site JOIN tbl_site_monit_invent ON site_id = tbl_Site_site_id """, (str(datetime.datetime.now()),))
我可以在Mac上运行这段代码而不会出现任何错误,但我需要它在Windows上运行


如何解决此错误?

非常简单。冒号字符不是Windows上文件名中的有效字符。这是不允许的

参考:

冒号字符与其他几个字符一起位于保留字符列表中。注意:冒号字符的一种用法是用作NTFS上备用数据流的分隔符。参考:

后续行动

自从我提供了上一个答案以来,这个问题已被大量编辑。一些注意事项:

我不太熟悉在Windows操作系统上运行MySQL。我使用MySQL服务器的大部分工作都是在Linux上进行的

选择。。。INTO OUTFILE语句将导致MySQL服务器尝试在服务器主机上写入文件

MySQL用户登录到MySQL的用户必须具有文件权限才能使用SELECT。。。转换成OUTFILE语句

此外,运行MySQL server的操作系统帐户必须具有将文件写入指定目录的操作系统权限,并且要写入的文件必须不存在。此外,文件名必须符合OS文件系统上文件名的命名规则

参考:

为了调试这类问题,我强烈建议您回显将要发送到MySQL服务器的实际SQL文本。然后获取SQL文本并从不同的客户端运行,比如mysql命令行客户端

对于调试特权问题,可以使用更简单的语句。测试将文件写入已知存在的目录,即mysql服务器具有写入文件的权限,并且文件名不存在且符合操作系统和文件系统规则的目录

例如,在普通Linux机器上,我们可以使用以下内容进行测试:

mysql> SELECT 'bar' AS foo INTO OUTFILE '/tmp/mysql_foo.csv'
在运行之前,我们可以轻松地验证/tmp目录是否存在,运行mysql服务器的OS帐户是否可以写入该目录,文件名是否符合文件系统的规则,以及文件名是否不存在,例如

$ su - mysql
$ ls -l /tmp/mysql_foo.csv
$ echo "foo" >/tmp/mysql_foo.csv
$ cat /tmp/mysql_foo.csv
$ rm /tmp/mysql_foo.csv
$ ls -l /tmp/mysql_foo.csv
一旦我们克服了这个障碍,我们就可以继续测试将文件写入另一个目录,一个文件名更复杂的文件。一旦管道系统正常工作,我们就可以将实际数据转换成可用的csv格式


最初的问题似乎表明MySQL服务器正在Windows操作系统上运行,并且似乎表明试图写入的文件名包含分号字符。Windows不允许分号作为文件名的一部分。

这只是权限错误。

真的没有什么信息……请参阅上面编辑的代码。这是一个简单的csv输出文件生成器,但它给出了一个权限错误。我已编辑您的问题,将错误包含在问题中,并删除了许多不必要的混乱。我已检查了上述解决方案,但问题与此无关。请注意,这并不是问题的答案。若要评论或要求作者澄清,请在他们的帖子下方留下评论-你可以随时对自己的帖子发表评论,一旦你有足够的评论,你就可以发表评论。我正在访问一个远程数据库,但它不起作用。等待了很长时间的回应,但没有人回应。甚至标记了帖子,然后我在自己的系统上安装了Workbench并使其正常工作。现在MySQL workbench可以正常工作,所以我发布了它的权限错误问题。这怎么不是答案呢?