ErrCode与“选择带变量的输出文件”-令人困惑的权限

时间:2018-08-08 08:17:32

标签: mysql variables permissions select-into-outfile

背景:我在mysql数据库中使用phpMyAdmin(MySQL Workbench)。我编写了一些PHP代码以将数据导入DB中,并使用Windows的任务计划程序执行此操作。 <= 这很好!

现在,我想将一些数据导出到Windows文件夹中的文件中。首先,我在phpMyAdmin中编写SQL代码以查看一些调试信息。 <= 这就是问题所在。

我的主题: 我想导出数据库的某些列。我的目标是在文件名中放置一个变量CURRENT_TIMESTAMP。为此,我使用了Concat语句。 我的代码(发布在下面),得到以下错误的结果:

  

无法创建/写入文件'C:\ Temp \ Export \ 2018-08-08 09:21:27.txt'(错误代码:13“权限被拒绝”)

有趣的是,如果我将变量CURRENT_TIMESTAMP替换为例如“ Hello World”没有错误,并且在该文件夹中创建了我的文件。

这是我的代码:

*set @sql = concat("SELECT `LS_ID_Nr`,
        `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`, 
        `Umstellzeit`, 
        `Produktionszeit`, 
        `Teilmeldung`, 
        `Fertigmeldung` INTO OUTFILE 'C:/Temp/Export/",CURRENT_TIMESTAMP,".txt' fields terminated by ';' lines terminated by '\r\n' From praemie where Proof_P = 0");
prepare s1 from @sql;
execute s1;
DROP PREPARE s1;
UPDATE praemie SET Proof_P = 1 WHERE Proof_P = 0;*

有人知道为什么要使用变量来Permission Error吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

噢......

我明白了! 问题是Windows无法处理文件名中的“:”。因此,我必须使用Date_Format语句编辑代码,如下所示:

set @sql = 
concat("SELECT `LS_ID_Nr`, `Stk_pro_Krt_DL` * `Krt_DL` + `RB_Stk_pro_Krt_DL` * `RB_Krt_DL`, 
`Umstellzeit`, `Produktionszeit`, `Teilmeldung`, `Fertigmeldung` 
INTO OUTFILE 'C:/Temp/Export/Test - ", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')," - Test.txt'
 fields terminated by ';' 
lines terminated by '\r\n' 
From praemie where Proof_P = 0")