Opened 4 years ago

Closed 7 weeks ago

#27708 closed Bug (fixed)

Relation between tables in different schemas with big names

Reported by: felipeps Owned by: nobody
Component: Migrations Version: master
Severity: Normal Keywords: different schema relation
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by felipeps)

I'm using Django 1.9.7 with Postgresql.

When I try to migrate a relation between two tables in different schemas, for example: a table named product, which is in a schema named dataflex and another table named client_product_sale_stc in another schema.

I got this error:

django.db.utils.ProgrammingError: ERRO: syntax error at or near "dataflex"
LINE 1: ...CONSTRAINT "client_product_setor_id_52aad07a_fk_"dataflex"....

After sometime trying to figure It out a solution for this problem, I tried to change the schemas's name to just df instead of dataflex and It worked perfectly.

I also tried to decreased table's name size and It worked just like when I decreased schema's name size, so It seems to be a problem with big constraints names.

I'm using the following syntax:

db_table = '"dataflex"."product"'

setor_id is the name of the field of the relation in client_product_sale_stx model/table.
product model/table does not have a field for the relation.

Examples models:

class ClientProductSaleStc():
    setor_id = models.ForeignKey(Product, db_column='setor_id')

    class Meta:
        db_table = 'client_product_sale_stc'

class Product():
    recnum = models.BigIntegerField(unique=True)
    hor_due = models.DecimalField(max_digits=2, decimal_places=0)
    min_due = models.DecimalField(max_digits=2, decimal_places=0)

    class Meta:
        db_table = '"dataflex"."product"'

Change History (8)

comment:1 Changed 4 years ago by felipeps

Type: UncategorizedBug

comment:2 Changed 4 years ago by felipeps

Description: modified (diff)

comment:3 Changed 4 years ago by Tim Graham

Could you please give example models to reproduce the problem?

comment:4 Changed 4 years ago by felipeps

Description: modified (diff)

comment:5 in reply to:  3 Changed 4 years ago by felipeps

Replying to Tim Graham:

Could you please give example models to reproduce the problem?

Sure, I updated the ticket with the example models.

Last edited 4 years ago by felipeps (previous) (diff)

comment:6 Changed 4 years ago by Simon Charette

Needs tests: set
Triage Stage: UnreviewedAccepted
Version: 1.9master

I believe this was fixed by 69b7d4b116e3b70b250c77829e11038d5d55c2a8, could you confirm this is the case?

Adapting the Oracle only test to also perform similar assertions on PostgreSQL using schemas was something I proposed on the PR but didn't enforce to avoid overloading the initial contributor. @felipeps, is this something you could do for PostgreSQL?

comment:7 Changed 3 years ago by felipeps

Description: modified (diff)

comment:8 Changed 7 weeks ago by felixxm

Needs tests: unset
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top