简体   繁体   English

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

[英]postgres ERROR: column "id" does not exist?

I have created a table in postgres using the StaticSentence below.我使用下面的 StaticSentence 在 postgres 中创建了一个表。 The table reads is created from another table products, and the data within is deleted because I just want the schema(I'm really new at this thing but I'm sure there's a better way to handle this).读取的表是从另一个表产品创建的,并且其中的数据被删除,因为我只想要模式(我对这件事真的很陌生,但我确信有更好的方法来处理这个问题)。

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();
}

then I try to write into this table using a PreparedSentence in the method below.然后我尝试在下面的方法中使用 PreparedSentence 写入该表。 An update command is run first to know whether to insert new data or update existing ones.首先运行更新命令以了解是插入新数据还是更新现有数据。

public void syncProduct(final ProductInfoExt prod) throws BasicException { public void syncProduct(final ProductInfoExt prod) 抛出 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);

); ); } }

Now the update runs perfectly but when the compiler gets to the insert statement, it rolls back and returns an error现在更新运行完美,但是当编译器进入插入语句时,它会回滚并返回错误

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

I really don't get why.我真的不明白为什么。

psql
\d PRODUCTS_imports
\d PRODUCTS

do they have the ID column?他们有 ID 列吗?

If the original table (products) is missing the ID column that would explain the error.如果原始表(产品)缺少可以解释错误的 ID 列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM