psql prompt changes from dbname=# to dbname-# or dbname(#

postgresql, psql

Solution

You tried to run a statement with unbalanced parentheses.

So `psql` thinks you're going to write more of the same statement and is waiting for input.

`psql` will not treat a semicolon as end-of-statement when there's an open quoted string, there are unbalanced parantheses, etc, since sometimes semicolons appear within statements in such cases. So `;`` won't work.

craig=> CREATE TABLE (
craig(> 
craig(> ;
craig(> 

Use `\r` or `\reset` to clear the in-progress query buffer.

Control-C has the same effect, but it'll also cancel an in-progress statement sent to the server, and on Windows it'll exit `psql` completely. So you should prefer to use `\r`:

craig=> CREATE TABLE (
craig(> 
craig(> ;
craig(> 
craig(> \r
Query buffer reset (cleared).
craig=> 

Problem

If I type something wrong into `psql`, default `dbname=#` changes to either `dbname-#` or `dbname(#` and normal commands no longer work. How do I get it back to `dbname=#`?

Original source