我从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 ERROR:
处或附近的语法错误“ALTER”at character 1 CEST STATEMENT:ALTER DATABASE postgres 重命名为postgres_old;
rename_database.sql具有以下内容:ALTER DATABASE postgres RENAME TO postgres_old;
答案 0 :(得分:2)
我说你的文件./batch/rename_database.sql
是使用unicode byte-order mark创建的。 psql
不喜欢这个。删除BOM,然后重试。
我引用链接的文章:
BOM的UTF-8表示是字节序列0xEF,0xBB,0xBF。将文本解释为ISO-8859-1或CP1252的文本编辑器或Web浏览器将为此显示字符.
答案 1 :(得分:0)
步骤1->首先断开与必须重命名的数据库
的连接步骤2->断开所有客户端与数据库的重命名
SELECT pg_terminate_backend(pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
AND datname = 'db_name_to_be_renamed';
步骤3-&gt;然后重命名数据库
ALTER DATABASE "db_name_to_be_renamed" RENAME TO "new_db_name";