#28612: inspectdb sets max_length to -1 if no field length specified in the DB
schema
-------------------------------------+-------------------------------------
               Reporter:  rvernica   |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Component:  Database   |        Version:  1.11
  layer (models, ORM)                |
               Severity:  Normal     |       Keywords:
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 Postgres schema:

 {{{
 # \d instance
                    Table "public.instance"
        Column       |            Type             | Modifiers
 --------------------+-----------------------------+-----------
  instance_id        | bigint                      | not null
  membership_id      | bigint                      | default 0
  host               | character varying           |
  port               | integer                     |
  online_since       | timestamp without time zone |
  base_path          | character varying           |
  server_id          | integer                     |
  server_instance_id | integer                     |
 Indexes:
     "instance_pkey" PRIMARY KEY, btree (instance_id)
     "instance_host_port_key" UNIQUE CONSTRAINT, btree (host, port)
     "instance_host_server_id_server_instance_id_key" UNIQUE CONSTRAINT,
 btree (host, server_id, server_instance_id)
     "instance_server_id_server_instance_id_key" UNIQUE CONSTRAINT, btree
 (server_id, server_instance_id)
 Check constraints:
     "instance_base_path_non_unique" CHECK (check_base_path(base_path) = 0)
 }}}

 Notice the type for `host` and `base_path` attributes.

 `inspectdb` output:

 {{{
 #!python
 # python3 manage.py inspectdb instance
 # This is an auto-generated Django model module.
 # You'll have to do the following manually to clean this up:
 #   * Rearrange models' order
 #   * Make sure each model has one field with primary_key=True
 #   * Make sure each ForeignKey has `on_delete` set to the desired
 behavior.
 #   * Remove `managed = False` lines if you wish to allow Django to
 create, modify, and delete the table
 # Feel free to rename the models, but don't rename db_table values or
 field names.
 from __future__ import unicode_literals

 from django.db import models


 class Instance(models.Model):
     instance_id = models.BigIntegerField(primary_key=True)
     membership_id = models.BigIntegerField(blank=True, null=True)
     host = models.CharField(max_length=-1, blank=True, null=True)
     port = models.IntegerField(blank=True, null=True)
     online_since = models.DateTimeField(blank=True, null=True)
     base_path = models.CharField(max_length=-1, blank=True, null=True)
     server_id = models.IntegerField(blank=True, null=True)
     server_instance_id = models.IntegerField(blank=True, null=True)

     class Meta:
         managed = False
         db_table = 'instance'
         unique_together = (('host', 'port'), ('server_id',
 'server_instance_id'), ('host', 'server_id', 'server_instance_id'),)
 }}}

 Notice the `max_length=-1` for `host` and `base_path` attributes.

 The `django.contrib.postgres` app is listed in `INSTALLED_APPS`

 PostgreSQL `9.6.5`
 Python `3.6.1`
 Django `1.11.5`

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28612>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/051.400856a2e26adb67be6cd6b752bed26b%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to