Opened 8 years ago

Closed 4 years ago

#27708 closed Bug (fixed)

Relation between tables in different schemas with big names

Reported by: felipeps Owned by: nobody
Component: Migrations Version: dev
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 by felipeps, 8 years ago

Type: UncategorizedBug

comment:2 by felipeps, 8 years ago

Description: modified (diff)

comment:3 by Tim Graham, 8 years ago

Could you please give example models to reproduce the problem?

comment:4 by felipeps, 8 years ago

Description: modified (diff)

in reply to:  3 comment:5 by felipeps, 8 years ago

Replying to Tim Graham:

Could you please give example models to reproduce the problem?

Sure, I updated the question with the example models.

Version 0, edited 8 years ago by felipeps (next)

comment:6 by Simon Charette, 8 years ago

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 by felipeps, 8 years ago

Description: modified (diff)

comment:8 by Mariusz Felisiak, 4 years ago

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