If you're using docker and redirecting the dump file from your local machine, don't forget -i
. This won't work:
docker exec <container> pg_restore -U "$USER" < ./localfile.dump;
Be sure that the docker container can see standard in with the -i
option! This should work:
docker exec -i <container> pg_restore -U "$USER" < ./localfile.dump;
You don't need to create file with this string. You can use P/Invoke to solve your problem.
Usage of NotepadHelper class:
NotepadHelper.ShowMessage("My message...", "My Title");
NotepadHelper
class code:
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace Notepad
{
public static class NotepadHelper
{
[DllImport("user32.dll", EntryPoint = "SetWindowText")]
private static extern int SetWindowText(IntPtr hWnd, string text);
[DllImport("user32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
public static void ShowMessage(string message = null, string title = null)
{
Process notepad = Process.Start(new ProcessStartInfo("notepad.exe"));
if (notepad != null)
{
notepad.WaitForInputIdle();
if (!string.IsNullOrEmpty(title))
SetWindowText(notepad.MainWindowHandle, title);
if (!string.IsNullOrEmpty(message))
{
IntPtr child = FindWindowEx(notepad.MainWindowHandle, new IntPtr(0), "Edit", null);
SendMessage(child, 0x000C, 0, message);
}
}
}
}
}
References (pinvoke.net and msdn.microsoft.com):
SetWindowText: pinvoke | msdn
FindWindowEx: pinvoke | msdn
SendMessage: pinvoke | msdn
Best Answer
Solved for me -
I had the same error restoring from PgAdmin4 on a computer with multiple Postgrsql versions installed. It was calling an older pg_restore version. In PgAdmin I changed the binary path in File/Preferences/Binary Path from $DIR/../runtime to C:\Program Files\PostgreSQL\10\bin and that fixed my issue. I suspect your having a similar issue at which you are unknowingly calling an older pg_restore version even though you updated postgresql.