PostgreSQL 语法错误 create table without double quotes
Syntax error on PostgreSQL create table without double quotes
尝试在不对名称加双引号的情况下创建表会导致语法错误,只有引用它才有效:
# CREATE TABLE user (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
ERROR: syntax error at or near "user"
LINE 1: CREATE TABLE user (
^
# CREATE TABLE "user" (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
CREATE TABLE
# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | user | table | postgres
(1 row)
这是在 Ubuntu 16.10:
附带的 PosgreSQL 9.5.5 上
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005, 64-bit
我知道在 PostgreSQL 中引用名称是个坏主意,但我无法解决这个问题,怎么了?
user
是包括 PostgreSQL 在内的许多 RDBMS 中的保留字,因此您应该使用双引号 "
将其转义或选择另一个。
P.S。由于此标识符是一个 table 名称,因此使用 users
代替 user
可能是个好主意。
尝试在不对名称加双引号的情况下创建表会导致语法错误,只有引用它才有效:
# CREATE TABLE user (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
ERROR: syntax error at or near "user"
LINE 1: CREATE TABLE user (
^
# CREATE TABLE "user" (
email TEXT,
first_name TEXT,
last_name TEXT,
password TEXT,
plan TEXT,
gender gender
);
CREATE TABLE
# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | user | table | postgres
(1 row)
这是在 Ubuntu 16.10:
附带的 PosgreSQL 9.5.5 上PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005, 64-bit
我知道在 PostgreSQL 中引用名称是个坏主意,但我无法解决这个问题,怎么了?
user
是包括 PostgreSQL 在内的许多 RDBMS 中的保留字,因此您应该使用双引号 "
将其转义或选择另一个。
P.S。由于此标识符是一个 table 名称,因此使用 users
代替 user
可能是个好主意。