43

我创建了一个名称中间带有连字符的数据库,其中createdb. 这成功地创建了数据库,但是在psql交互式客户端中,如果我尝试这样的命令,则会出现语法错误:

ALTER DATABASE my-database SET SCHEMA = myschema,public;

psql在“-”处或附近抱怨语法错误

是否有一些关于什么是有效的 PostgreSQL 数据库名称的文档?

我应该只下划线而不是连字符吗?

4

3 回答 3

38

您询问的文档在这里:

http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

大多数人只是坚持使用小写字母、数字和下划线——以避免一直输入引号。

于 2012-04-18T20:22:45.853 回答
30

尝试将其放在双引号中:

ALTER DATABASE "my-database" SET SCHEMA = myschema,public;

于 2012-04-18T19:45:49.010 回答
3

我遇到了一个问题,以上答案对我有所帮助。所以在dbname上分享场景

场景:我尝试使用 PG admin III 更改数据库名称。我的数据库名称是 My_Database

运行以下查询失败:

ALTER DATABASE My_Database RENAME TO dba;
ALTER DATABASE [My_Database] RENAME TO dba;

ALTER DATABASE 'My_Database' RENAME TO dba;

然后我在下面尝试并成功

ALTER DATABASE "My_Database" RENAME TO dba;
于 2016-03-02T12:42:36.293 回答