postgres 错误:列“id”不存在?

Posted

技术标签:

【中文标题】postgres 错误:列“id”不存在?【英文标题】:postgres ERROR: column "id" does not exist? 【发布时间】:2014-09-02 23:49:21 【问题描述】:

我使用下面的 StaticSentence 在 postgres 中创建了一个表。读取的表是从另一个表产品创建的,并且其中的数据被删除,因为我只想要架构(我对这件事真的很陌生,但我确信有更好的方法来处理这个问题)。

public void syncProductsBefore() throws BasicException 
    new StaticSentence(s,"CREATE TABLE PRODUCTS_imports(ID) WITH OIDS  AS SELECT * FROM PRODUCTS ").exec();
    new StaticSentence(s, "DELETE FROM PRODUCTS_imports").exec();

然后我尝试在下面的方法中使用 PreparedSentence 写入该表。首先运行更新命令,以了解是插入新数据还是更新现有数据。

public void syncProduct(final ProductInfoExt prod) throws BasicException

    Transaction t = new Transaction(s) 
        public Object transact() throws BasicException 
            /*Sync the Product in a transaction*/

            /* Try to update*/
            if (new PreparedSentence(
                    s,
                    "UPDATE PRODUCTS SET REFERENCE = ?, CODE = ?, NAME = ?, PRICEBUY = ?, PRICESELL = ?, CATEGORY = ?, TAXCAT = ?, IMAGE = ? WHERE ID = ?",
                    SerializerWriteParams.INSTANCE).exec(new DataParams() 
                public void writeValues() throws BasicException 
                    setString(1, prod.getReference());
                    setString(2, prod.getCode());
                    setString(3, prod.getName());
                    // setBoolean(x, p.isCom());
                    // setBoolean(x, p.isScale());
                    setDouble(4, prod.getPriceBuy());
                    setDouble(5, prod.getPriceSell());
                    setString(6, prod.getCategoryID());
                    setString(7, prod.getTaxCategoryID());
                    setBytes(8, ImageUtils.writeImage(prod.getImage()));
                    // setDouble(x, 0.0);
                    // setDouble(x, 0.0);
                    setString(9, prod.getID());
                
            ) == 0) 


                /* leyonce */
                /**
                 * If not updated, try to insert insert into the import
                 * temporary table create temporary sorted copies of product
                 * catalog and products
                 */
                new PreparedSentence(
                        s,
                        "INSERT INTO PRODUCTS_imports(ID, REFERENCE, CODE, NAME, ISCOM, ISSCALE, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, STOCKCOST, STOCKVOLUME) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
                        SerializerWriteParams.INSTANCE)
                        .exec(new DataParams()                             
                            public void writeValues() throws BasicException

                            /*leyonce --insert values into temporary import table*/ 
                                setString(1, prod.getID());
                                setString(2, prod.getReference());
                                setString(3, prod.getCode());
                                setString(4, prod.getName());
                                setBoolean(5, prod.isCom());
                                setBoolean(6, prod.isScale());
                                setDouble(7, prod.getPriceBuy());
                                setDouble(8, prod.getPriceSell());
                                setString(9, prod.getCategoryID());
                                setString(10, prod.getTaxCategoryID());
                                setBytes(11, ImageUtils.writeImage(prod
                                        .getImage()));
                                setDouble(12, 0.0);
                                setDouble(13, 0.0);

);

现在更新运行完美,但是当编译器进入插入语句时,它会回滚并返回错误

org.postgresql.util.PSQLException: 
ERROR: column "id" does not exist
  Position: 84

我真的不明白为什么。

【问题讨论】:

StaticSentencePreparedSentence 是什么?这些自定义包装器是否围绕 JDBC 类,即PreparedStatement?谷歌搜索PreparedSentence 发现了一些从 JDBC 类派生的不同自定义类... 向我们展示create tableproducts 的声明 【参考方案1】:
psql
\d PRODUCTS_imports
\d PRODUCTS

他们有 ID 列吗?

如果原始表(产品)缺少可以解释错误的 ID 列。

【讨论】:

产品表存在。 PRODUCTS 表中是否存在列 ID?如果是这样,那么我无法解释错误消息。 这里发布了一个类似的问题(至少问题的原因似乎相同):#10015531

以上是关于postgres 错误:列“id”不存在?的主要内容,如果未能解决你的问题,请参考以下文章

org.postgresql.util.PSQLException:错误:列 user0_.id 不存在 - 休眠

出现错误 - PG::UndefinedColumn(错误:使用 postgres 版本 13.3 的 heroku 上不存在列 d.adsrc

错误:pg_repack 失败并出现错误:错误:列“relhasoids”不存在

错误:PostgreSQL 中不存在列

收到以下错误:“SequelizeDatabaseError 列“createdAt”不存在”

列_ID不存在错误虽然它存在于表中