我试图使用MySQL SELECT INTO OUTFILE语句将表的内容转储到csv文件.如果我做:
SELECT column1, column2
INTO OUTFILE 'outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
Run Code Online (Sandbox Code Playgroud)
outfile.csv将在服务器上创建,该数据库的文件存储在同一目录中.
但是,当我将查询更改为:
SELECT column1, column2
INTO OUTFILE '/data/outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
Run Code Online (Sandbox Code Playgroud)
我明白了:
ERROR 1 (HY000): Can't create/write to file '/data/outfile.csv' (Errcode: 13)
Run Code Online (Sandbox Code Playgroud)
Errcode 13是一个权限错误,但即使我将/ data的所有权更改为mysql:mysql并赋予它777权限,我也能得到它.MySQL以用户"mysql"运行.
奇怪的是我可以在/ tmp中创建文件,只是没有在我尝试过的任何其他目录中,即使权限设置使得用户mysql应该能够写入目录.
这是在Ubuntu上运行的MySQL 5.0.75.
在Perl中,对象只是对已被保存到特定类中的任何基本Perl数据类型的引用.在未使用的引用上使用ref()函数时,会告诉您引用所指向的数据类型.但是,当您在受祝福的引用上调用ref()时,将返回引用已被祝福的包的名称.
我想知道祝福参考的实际基础类型.我怎么能确定这个?
我有一个MySQL表正确设置为UTF-8字符集.我怀疑插入到我的一个列中的一些数据已被双重编码.我期待看到一个不间断的空格字符(UTF-8 0xC2A0),但是从该表中选择此列时我得到的是四个八位字节(0xC3A2 0xC2A0).这就是我期望看到的,如果在某些时候有人将UTF-8 0xC2A0视为ISO-8859-1,则在插入MySQL之前尝试再次编码为UTF-8.
我上面看到四个八位字节的测试涉及用Perl的DBD :: mysql从MySQL中选择这个列.我想将Perl和DBD :: mysql排除在等式之外,以验证这四个八位字节实际上是MySQL存储的内容.有没有办法直接使用SQL查询?
我正在使用PyCrypto,我似乎成功地解密了我的数据.但是,我收到的字符串似乎表现得很奇怪:
...
plaintext = cipher.decrypt(encrypted)
print 'plaintext length is %u' % len(plaintext)
print 'plaintext: %s' % plaintext
print 'plaintext is "%s"' % plaintext
Run Code Online (Sandbox Code Playgroud)
明文有我期望的字符串("POEorOPE"),但输出似乎很奇怪:
plaintext length is 16
plaintext: POEorOPE
plaintext is ""OEorOPE
Run Code Online (Sandbox Code Playgroud)
为什么第三个print语句中的字符串似乎占用零空间,因此它的第一个字符被我认为的结束引号覆盖?我现在用明文存储的内容还有其他什么吗?
编辑:
感谢您的评论,我看到了正在发生的事情.(虽然为什么我的字符串中有退格字符,我不知道.)
print repr(plaintext)
'POEorOPE\x08\x08\x08\x08\x08\x08\x08\x08'
Run Code Online (Sandbox Code Playgroud) 我们有一个版本,有问题的提交(daf7110)在历史中被合并回主人.此时(85a13270),master具有daf7110添加的代码行.
当我们的一个开发人员将master合并到他的分支(dev-branch)时,代码行消失了.它们从未出现在开发者合并的历史中.我验证了这个:
git checkout c513d2 # <--last commit on dev-branch before the merge
git log -S string_that_was_added -- lib/File/It/Was/In.pm
Run Code Online (Sandbox Code Playgroud)
所以:
我怎样才能获得更多关于为什么git的合并逻辑决定代码不能在合并中存活的细节?或者是否有其他原因我的提交不会幸免于合并?
我试图使用jQuery并行制作两个ajax请求,如下所示:
var sources = ["source1", "source2"];
$(sources).each(function() {
var source = this;
$.ajax({
async: true,
type: "POST",
data: {post: "data", in: "here"},
url: "/my/url/" + source,
success: function(data) {
process_result(data);
}
});
});
Run Code Online (Sandbox Code Playgroud)
我从这个问题得到了基本结构,但我的要求仍然不是并行的."source1"需要一段时间才能完成,我可以在服务器上看到第二个请求在第一个请求完成之前没有进行.
据我所知,我没有任何其他活动请求,所以我认为这对浏览器的最大并行请求数没有问题.我在这里错过了什么吗?
我正在对大型标量运行正则表达式.虽然这场比赛没有捕获任何东西,但我的过程在这场比赛后增长了30M:
# A
if (${$c} =~ m/\G<<\s*/cgs)
{
#B
...
}
Run Code Online (Sandbox Code Playgroud)
$c是一个相当大的标量(大约21M)的参考,但我已经确认它pos(${$c})位于正确的位置,表达式匹配第一个字符,并pos(${$c})在匹配后更新到正确的位置.但正如我所提到的,这个过程在#A和#B之间增长了大约30M,尽管我没有用这个匹配捕获任何东西.我的记忆在哪里?
编辑:是的,使用$&是责备.我们使用的是Perl 5.8.8,我的脚本使用的是Getopt :: Declare,它使用内置的Text :: Balanced.该模块的1.95版本正在使用$&.Perl 5.10附带的2.0.0版本已删除了$&对该问题的引用并缓解了该问题.
我有一个用GD :: Image操纵的图像,我想用Image :: Magick做进一步的操作.我想避免将图像写入磁盘,因此Image :: Magick可以读取它.Image :: Magick的Read函数将接受一个文件句柄作为参数,所以我试图将它传递给IO :: Scalar我用GD :: Image的输出创建的对象.
但是,由于IO :: Scalar对象可以被视为字符串,因此看起来Image :: Magick将图像内容解释为无法找到的文件名,而Read()失败.
是否有另一种方法从标量创建一个文件句柄,其行为更像常规文件句柄,还是有另一种更简单的方法来完成我在这里尝试做的事情?
my $FH = new IO::Scalar \$image_bin;
my $magick = Image::Magick->new;
my $response = $magick->Read(file => $FH);
Run Code Online (Sandbox Code Playgroud)
$回复是:
"Exception 435: unable to open image `????': No such file or directory"
Run Code Online (Sandbox Code Playgroud) 我以编程方式创建PDF,最近对我的生成器的更改是创建文件,使我的Mac上的Mac预览版和Adobe Reader都崩溃.在Adobe Reader崩溃之前,它会报告:
处理页面时出错.阅读本文件存在问题(18).
我怀疑那个"18"可能会给我一些关于我创建的PDF有什么问题的信息.是否有文件解释这些状态代码的含义?
perl ×4
mysql ×2
ajax ×1
encoding ×1
git ×1
imagemagick ×1
into-outfile ×1
javascript ×1
jquery ×1
pdf ×1
python ×1
reference ×1
regex ×1
sql ×1
types ×1