当前位置: 首页 > 知识库问答 >
问题:

无法让简单的PostgreSQL插入工作

邹阳
2023-03-14

我试图做一个简单的插入到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")

我已经把我的表名用双引号引起来了,正如我在这里读到的,我应该这样做。

并使用DEFAULT自动增加id,就像我在这里读到的那样。

有什么想法吗?谢谢

共有3个答案

华恩
2023-03-14

Postgres、Oracle等希望列名在大小写不一的情况下使用引号。因此,要么为表列创建一个所有小的或所有大写的约定,要么按照David Faber的建议使用引号

INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')
商同化
2023-03-14
INSERT INTO "imageTagBusinessMainCategory"
("businessMainCategory")
VALUES
('auto dealer')

编辑:在列名周围添加双引号

丁书
2023-03-14

使用'自动经销商'代替。PostgreSQL将"解释为标识符的引号,将'解释为字符串的引号。

也:

>

  • 如果这是一个新项目,不要使用混合案例表;这是后来沮丧的根源。在SQL语句中不能使用任何大小写,而必须引用标识符名称并正确使用大小写。

    没有必要指定id/DEFAULT,您是在要求它做它已经会做的事情。我还没有遇到一个DBMS,它要求您包括列名称/DEFAULT,如果您希望它将默认值放在列中,所以我不认为这个额外的KV对会让以后阅读您的代码的人更清楚地了解正在发生的事情。

  •  类似资料:
    • 问题内容: 我在使用SQL时遇到了一些问题。我正在尝试在表中插入2个值。 那就是我的查询:INSERT INTO tableinfo(table,date)VALUES(’Sell’,’August‘24’); 但它不起作用。我有类似的东西: 这是非常基本的,所以我不知道为什么它不起作用:( PostgreSQL 9.2.4 问题答案: 问题不是出自INSERT,而是您要发出的无效SQL。首先尝试

    • 问题内容: 我仍然一遍又一遍地收到此错误:。我已经在Internet上搜索了一个解决方案,但没有任何效果,肯定是一个小细节,因为我不熟悉JAvaFX,这是我的第一个HelloWorld应用程序。无论如何,这是我正在使用的代码: sample.fxml: 还有 SampleController.java 任何帮助,将不胜感激。 问题答案: 找到了问题。它是ActionEvent类,在import部分

    • 问题内容: 我仍然一遍又一遍地收到此错误:。我已经在Internet上搜索了一个解决方案,但没有任何效果,肯定是一个小细节,因为我不熟悉JAvaFX,这是我的第一个HelloWorld应用程序。无论如何,这是我正在使用的代码: sample.fxml: 还有 SampleController.java 任何帮助,将不胜感激。 问题答案: 找到了问题。它是ActionEvent类,在import部分

    • 在发布这篇文章之前,我做了很多研究。 我得到以下错误时,试图插入一个记录到PostgreSQL使用Laravel雄辩的ORM。 这是错误: 这是数据库表创建模式: 这就是我试图执行的代码: 我创建了一个模型类FbPostShareCount扩展雄辩。 我知道laravel不支持复杂的键,但当我使用MySQL时,这个问题并没有发生

    • 问题内容: 我基本上是想找出使用​​SqlClient名称空间在C#.NET中执行基本插入操作的最简单方法。 我正在使用我的数据库链接,已经成功执行了一些读取,并且我想知道插入数据的最简单方法。我在Google上发现了似乎很冗长的方法。 问题答案:

    • log4j-core-2.0-beta8.jar 并使用默认配置完成了尽可能简单的示例: 但由于某种原因,我得到的只是‘测试结束’。我从来没有得到过Hello World,无论在哪里我都能找到。我找错地方了吗?我的理解是,在默认配置下,它应该被打印到控制台,并带有“test over”。我已经将日志级别更改为info,仍然相同。我试着把记录器功能放到一个类中,仍然是一样的。我正在log4j文档页面