Command line 从命令行重命名postgresql数据库

Command line 从命令行重命名postgresql数据库,command-line,rename,postgresql-9.1,alter,Command Line,Rename,Postgresql 9.1,Alter,我从bat文件运行此命令: start/wait/d "C:\Program Files\PostgreSQL\9.1\bin\" psql.exe --port 5432 --username postgres --dbname alter_db --file ./batch/rename_database.sql 我得到这个日志错误: CEST错误:位于或接近的语法错误 字符1处的“改变”CEST语句:改变数据库postgres 更名为postgres_old rename_databas

我从bat文件运行此命令:

start/wait/d "C:\Program Files\PostgreSQL\9.1\bin\" psql.exe --port 5432 --username postgres --dbname alter_db --file ./batch/rename_database.sql
我得到这个日志错误:

CEST错误:位于或接近的语法错误

字符1处的“改变”CEST语句:改变数据库postgres 更名为postgres_old


rename_database.sql包含以下内容:将数据库postgres rename改为postgres_old

我想说您的文件
/batch/rename\u database.sql
是用
psql
不喜欢这样。请删除BOM表并重试

我引用链接文章:

BOM的UTF-8表示是字节序列0xEF、0xBB、0xBF。将文本解释为ISO-8859-1或CP1252的文本编辑器或web浏览器将为此显示字符


步骤1->首先断开与必须重命名的数据库的连接

SELECT pg_terminate_backend(pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
    AND datname = 'db_name_to_be_renamed';
步骤2->断开所有客户端与要重命名的数据库的连接

SELECT pg_terminate_backend(pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
    AND datname = 'db_name_to_be_renamed';

谢谢@Craig Ringer!它是有效的——我不知道我是如何得到这个标记的。我只能在使用具有足够权限的用户连接到psql时重命名数据库,并且不声明任何给定的数据库。裸的“
psql
”命令或
psql-U postgres
应该允许重命名您的数据库。使用-U与另一个用户连接,然后使用set角色更改postgres对我不起作用。上面@user1767316的评论是我重命名数据库的唯一方法,这会在postgres中给我带来麻烦。