我正在尝试在 postgres 表中进行简单的插入,但我收到一个错误,即我尝试插入的值被解释为列名
INSERT INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT, "auto dealer")
其中 id 设置为主键,自动递增,不为空。这些是我在 phpPgAdmin 中设置表格时勾选的框。
我收到了这个错误:
ERROR: ERROR: column "auto dealer" does not exist
Query = INSERT
INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT,
"auto dealer")
我已经将我的表名放在双引号中,因为我应该阅读 here。
并使用 DEFAULT
自动增加 id,因为我应该阅读 here。
有任何想法吗?谢谢!
ERROR: ERROR: syntax error at or near "'imageTagBusinessMainCategory'" Position: 13
请改用 'auto dealer'
。 PostgreSQL 将 "
解释为标识符的引号, '
解释为字符串的引号。
还:
如果这是一个新项目,请不要使用混合大小写表;这是后来沮丧的根源。不能在 SQL 语句中使用任何大小写,您必须同时引用标识符名称并正确区分大小写。
无需指定 id/DEFAULT,您是在要求它执行它已经完成的操作。如果您希望将默认值放入列中,我还没有遇到要求您包含 columnName/DEFAULT 的 DBMS,所以我认为这个额外的 KV 对不会让正在阅读您的任何人更清楚发生的事情稍后编码。
INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')
编辑:在列名周围添加双引号
ERROR: ERROR: column "businessmaincategory" of relation "imageTagBusinessMainCategory" does not exist
select * from thisHasAReallyLongName
访问名为 thishasareallylongname
的表。
Postgres、Oracle 等希望列名在大小写混合时用引号引起来。因此,要么为你的表格列创建一个全部小写或全部大写的约定,要么按照 David Faber 的建议使用引号
INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')
在我的案例中,我不得不将列名从 camelCase 'isAdmin'
更改为 snake_case 'is_admin'
。
ERROR: ERROR: column "businessmaincategory" of relation "imageTagBusinessMainCategory" does not exist