diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index b2264c91fac95611ad1faef7e93fd91f078c2ee2..dc06f6670274c7fb09c0d41ac3dc8ef8528ff469 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -111,8 +111,6 @@ main(int argc, char *argv[])
 	setvbuf(stderr, NULL, _IONBF, 0);
 #endif
 
-	setup_cancel_handler();
-
 	pset.progname = get_progname(argv[0]);
 
 	pset.db = NULL;
@@ -246,6 +244,8 @@ main(int argc, char *argv[])
 		exit(EXIT_BADCONN);
 	}
 
+	setup_cancel_handler();
+
 	PQsetNoticeProcessor(pset.db, NoticeProcessor, NULL);
 
 	SyncVariables();