我正在学习postgresql,并用elephantsql制作这个表格:
CREATE TABLE "public.ae_User" (
"Id" serial NOT NULL,
"Name" character varying(30) NOT NULL,
"Username" character varying(16) NOT NULL UNIQUE DEFAULT 'Guest',
"Email" character varying(30) NOT NULL,
"Password" character varying(120) NOT NULL,
"Salt" character varying(40) NOT NULL,
"User_type" int NOT NULL DEFAULT '0',
"Deleted" BOOLEAN NOT NULL DEFAULT 'false',
CONSTRAINT "ae_User_pk" PRIMARY KEY ("Id")
) WITH (
OIDS=FALSE
);
但当我尝试插入到:
INSERT INTO "public"."public.ae_User" (Name, Username, Email, Password, Salt, User_type, Deleted)
VALUES ("Miguel", "adminMiguel", "miguel@gmail.com", "admin", "bla", 3, false)
它返回:
ERROR: column "username" of relation "public.ae_User" does not exist
LINE 1: INSERT INTO "public"."public.ae_User" (Username, Email, Pass...
您的错误在INSERT INTO"public"中。"public.ae_User"
将被INSERT INTO"public"替换。"ae_User"
您应该在列名中使用双引号,因为Postgres将列折叠为小写。
如果列包含大写字母(和/或其他语法冲突),则必须使用双引号
另一方面,对于文本或varchar数据已传递到的列,必须使用单引号
INSERT INTO "public"."public.ae_User" ("Name", "Username", "Email", "Password", "Salt", "User_type", "Deleted")
VALUES ('Miguel', 'adminMiguel', 'miguel@gmail.com', 'admin', 'bla', 3, false)
附笔:
在我看来,最好改变你的结构如下:
CREATE TABLE public."ae_User" (
"Id" serial NOT NULL,
"Name" character varying(30) NOT NULL,
"Username" character varying(16) NOT NULL UNIQUE DEFAULT 'Guest',
"Email" character varying(30) NOT NULL,
"Password" character varying(120) NOT NULL,
"Salt" character varying(40) NOT NULL,
"User_type" int NOT NULL DEFAULT '0',
"Deleted" BOOLEAN NOT NULL DEFAULT 'false',
CONSTRAINT "ae_User_pk" PRIMARY KEY ("Id")
) WITH (
OIDS=FALSE
);
INSERT INTO public."ae_User" ("Name", "Username", "Email", "Password", "Salt", "User_type", "Deleted")
VALUES ('Miguel', 'adminMiguel', 'miguel@gmail.com', 'admin', 'bla', 3, false)
我正在设置我的PostgreSQL 9.1。我不能用PostgreSQL做任何事情:can't,can't;所有操作都返回错误消息 是我的帐户名,并且我在此帐户下PostgreSQL 9.1。 类似的错误对于帐户仍然存在。
问题内容: 我在使用PostgreSQL 9.3和使用qoutes创建的表时遇到了一个奇怪的问题。例如,如果我使用qoutes创建表: 该表已正确创建,在pgAdminIII的SQL窗格中查看该引号时,可以看到保留了引号。但是,当我查询数据库以查找所有可用表的列表时(使用下面的查询),我看到结果不包含表名的引号。 由于该表是用引号创建的,因此我无法直接使用上述查询返回的表名,因为该表名未加引号,并
我在列名方面也遇到了同样的问题,但我希望如果我能找到一个解决表名问题的方法,那么类似的方法也能适用于列名。
问题内容: 我在尝试使用PostgreSQL和Hibernate时遇到一些问题,更具体地说,是标题中提到的问题。我已经在网上搜索了几个小时,但没有找到适合我的解决方案。 我正在为Web开发人员使用Eclipse Java EE IDE。在Ubuntu 9.10上使用HibernateTools,Hibernate 3,PostgreSQL 8.4.3构建ID:20090920-1017 以下是相关
问题内容: 嗨,我尝试插入表tester3,当我使用语法时失败 但 工作正常。 我想我缺少了一些非常琐碎的东西,我尝试了其他一些列名,其中一些工作正常,而有些却无法正常工作。我很迷惑。PostgreSQL是否对列名有限制,因此插入查询的第一种语法适用于该列名? 编辑 : 签出Girdon Linoff的答案,正如FrankHeikens指出的那样,其他的列名在没有小写的情况下也没有引号。 小写列是