Я пытаюсь создать резервную копию базы данных с помощью pg_dump
. Имя базы данных не имеет символов ASCII, например, 本 物 で は な い デ ー タ ベ ー ス ス.pg_dump Fails Когда символы UTF-8 в имени выходного файла
Я делаю следующий вызов:
pg_dump.exe --file="C:\Users\AUser\AppData\Local\Temp\本物ではないデータベース名_20150309185239.pgbak" pg_backupc4c978f4aebc4153adcabab6e097c347
Однако это не удается из-за ошибки:
pg_dump: [archiver] could not open output file "C:\Users\AUser\AppData\Local\Temp\????????????_20150309185239.pgbak": Invalid argument
То, что я не понимаю, что другие команды работают с не ASCII символов. Например, mdkdir 本物ではないデータベース名
отлично работает.
Является ли это ошибкой в pg_dump
или я что-то не так?
UPDATE
По Шерил «@ Mike Cat Напомним,» в комментариях, я проверил переназначение и он работал в обоих Powershell и стандартной командной строки.
Однако, я тогда пытался автоматизировать это с C# и когда я пытаюсь запустить команды выше, с использованием C# Process
он не:
ProcessStartInfo psi = new ProcessStartInfo(command, args);
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = psi.RedirectStandardError = true;
using (Process process = new Process())
{
process.StartInfo = psi;
string s = "";
process.ErrorDataReceived += delegate (object sender, DataReceivedEventArgs e)
{
s += e.Data;
};
string s1 = "";
process.OutputDataReceived += delegate (object sender, DataReceivedEventArgs e)
{
s1 += e.Data;
};
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
TimeSpan maxTime = TimeSpan.FromMinutes(10);
if (!process.WaitForExit((int)maxTime.TotalMilliseconds))
{
throw new Exception("Command " + command + " " + args + " Timed out after " + maxTime.TotalSeconds);
}
if (process.ExitCode != 0)
{
throw new Exception("Command " + command + " " + args + " failed with " + s + " " + s1);
}
}
Опять же, я могу сделать C# Process
и называют mkdir
с японцами письма и все работает.
Работает для меня в PostgreSQL 9.4 под 64-битным Ubuntu 14.04 LTS. Обычно это симптом проблемы с кодовой страницей или проблема с шрифтом. См. Http://stackoverflow.com/q/388490/562459 –
@ MikeSherrill'CatRecall 'Я запускаю PostgreSQL 9.3 в Windows 8.1. Ill обновить до PostgreSQL 9.4 и посмотреть, что произойдет. – shortspider
Какой терминал вы используете для ввода этой команды? если это cmd, позиция кавычек кажется неправильной. – Petesh