Обсуждение: BUG #16407: Column mismatch

Поиск
Список
Период
Сортировка

BUG #16407: Column mismatch

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      16407
Logged by:          onlinejudge95
Email address:      onlinejudge95@gmail.com
PostgreSQL version: 12.2
Operating system:   Docker
Description:

I have a flask app that connects to a Postgres DB and stores the user info
there.
For local development purposes, I am using docker to bring up 2 containers
one my app and the other of Postgres.
In my models, I am defining my primary key as a column named id

class User(db.Model):
    __tablename__ = "users"
    _id = db.Column(UUID(as_uuid=True), primary_key=True, unique=True,
nullable=False,)
    username = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(128), nullable=False)

    def __init__(self, username, email):
        self._id = uuid.uuid4().hex
        self.username = username
        self.email = email

Everything works fine in my local system when I use this Dockerfile

FROM postgres:12.2

LABEL maintainer="onlinejudge95"

COPY configs/db.sql /docker-entrypoint-initdb.d/

But while deploying to Heroku and using the Postgre image there, I receive
the following errors on any operation that queries my DB.

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) column
users.id does not exist

So I decided to change my models to use _id instead of id, this change seems
to work fine.
Is this a known discrepancy?


Re: BUG #16407: Column mismatch

От
"David G. Johnston"
Дата:
On Fri, May 1, 2020 at 8:28 AM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      16407
Logged by:          onlinejudge95
Email address:      onlinejudge95@gmail.com
PostgreSQL version: 12.2
Operating system:   Docker
Description:       

I have a flask app that connects to a Postgres DB and stores the user info
there.
For local development purposes, I am using docker to bring up 2 containers
one my app and the other of Postgres.
In my models, I am defining my primary key as a column named id


Everything works fine in my local system when I use this Dockerfile

FROM postgres:12.2


So I decided to change my models to use _id instead of id, this change seems
to work fine.
Is this a known discrepancy?

This is a bug report mailing list - what you are describing doesn't seem like a bug - it doesn't even seem like something the PostgreSQL server is responsible for.  Given what does work locally doesn't work on Heroku you should probably ask them.

However, you posted the following while claiming to have named your column "id"...

  _id = db.Column(UUID(as_uuid=True), primary_key=True, unique=True,
self._id = uuid.uuid4().hex

Maybe your local development copy has some unwanted data within it that causing it not to fail and when you deploy to a clean Heroku instance the discrepancy comes to light?

David J.