Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DuckDB drop column: no column named that way

Tags:

duckdb

Why DuckDB tells me there is no column named that way when I try to drop a column?

D DESCRIBE oa_pub;
┌──────────────┬─────────────┬─────────┬─────────┬──────────────────────────┬─────────┐
│ column_name  │ column_type │  null   │   key   │         default          │  extra  │
│   varchar    │   varchar   │ varchar │ varchar │         varchar          │ varchar │
├──────────────┼─────────────┼─────────┼─────────┼──────────────────────────┼─────────┤
│ id           │ INTEGER     │ NO      │ PRI     │ nextval('oa_pub_id_seq') │ NULL    │
│ project_id   │ INTEGER     │ NO      │ UNI     │ NULL                     │ NULL    │
│ oa_author_id │ VARCHAR     │ NO      │ UNI     │ NULL                     │ NULL    │
│ oa_pub_id    │ VARCHAR     │ NO      │ UNI     │ NULL                     │ NULL    │
│ oa_pub_json  │ JSON        │ YES     │ NULL    │ NULL                     │ NULL    │
│ oa_pub_id_2  │ VARCHAR     │ YES     │ NULL    │ NULL                     │ NULL    │
└──────────────┴─────────────┴─────────┴─────────┴──────────────────────────┴─────────┘
D ALTER TABLE oa_pub DROP COLUMN oa_pub_id;
Catalog Error:
table "oa_pub" does not have a column named oa_pub_id
like image 824
robertspierre Avatar asked Dec 18 '25 15:12

robertspierre


1 Answers

Although the error message is cryptic, the problem was that oa_pub_id is part of a unique constraint. See the key column of the table returned by DESCRIBE.

To reproduce:

D CREATE TABLE test2 (id INT PRIMARY KEY, name TEXT, surname TEXT, age INT, UNIQUE(surname, age));
D DESCRIBE test2;
┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │  null   │   key   │ default │  extra  │
│   varchar   │   varchar   │ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ id          │ INTEGER     │ NO      │ PRI     │ NULL    │ NULL    │
│ name        │ VARCHAR     │ YES     │ NULL    │ NULL    │ NULL    │
│ surname     │ VARCHAR     │ YES     │ UNI     │ NULL    │ NULL    │
│ age         │ INTEGER     │ YES     │ UNI     │ NULL    │ NULL    │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┘
D ALTER TABLE test2 DROP COLUMN surname;
Catalog Error:
table "test2" does not have a column named "surname"
like image 172
robertspierre Avatar answered Dec 21 '25 11:12

robertspierre



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!