1

我从一个 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 错误:在或附近有语法错误

“ALTER”在字符 1 CEST 语句中:ALTER DATABASE postgres RENAME TO postgres_old;

rename_database.sql 有以下内容: ALTER DATABASE postgres RENAME TO postgres_old;

4

2 回答 2

2

我会说您的文件./batch/rename_database.sql是使用unicode byte-order mark创建的。psql不喜欢这个。删除 BOM 并重试。

我引用链接的文章:

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

于 2013-08-12T12:54:39.997 回答
-1

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

步骤 2-> 断开所有客户端与要重命名的数据库的连接

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

Step 3->然后重命名数据库

ALTER DATABASE "db_name_to_be_renamed" RENAME TO "new_db_name";
于 2017-06-05T06:05:49.093 回答