{{{
class Animal(models.Model):
name = models.CharField("Name", max_length=256)
age = models.IntegerField("Age")
class Cat(Animal):
pass
class Dog(Animal):
pass
}}}
Lets say, Cat and Dog model don't have fields yet because we don't know
yet the requirements. We create migrations first to start working with
this simple model. But, someday we realize that Dog model is no longer
needed, so we need to delete it. The model became like this:
{{{
class Animal(models.Model):
name = models.CharField("Name", max_length=256)
age = models.IntegerField("Age")
class Cat(Animal):
pass
}}}
And then, we need to make migrations again. But, after make migrations, I
found that there is an error when migrating. The migrations strategy
somehow need to rename the table to myapp_dog__old, then create new table
myapp_dog, and then copy all records in myapp_dog__old to myapp_dog. It
raise error when using sqlite becase the SQL query looks like this:
{{{
INSERT INTO "myapp_dog" () SELECT FROM "myapp_dog__old"
}}}
This happens because dog model has no fields.
--
Ticket URL: <https://code.djangoproject.com/ticket/29592>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
> Consider we have the following model:
>
> {{{
> class Animal(models.Model):
> name = models.CharField("Name", max_length=256)
> age = models.IntegerField("Age")
>
> class Cat(Animal):
> pass
>
> class Dog(Animal):
> pass
>
> }}}
>
> Lets say, Cat and Dog model don't have fields yet because we don't know
> yet the requirements. We create migrations first to start working with
> this simple model. But, someday we realize that Dog model is no longer
> needed, so we need to delete it. The model became like this:
>
> {{{
> class Animal(models.Model):
> name = models.CharField("Name", max_length=256)
> age = models.IntegerField("Age")
>
> class Cat(Animal):
> pass
> }}}
>
> And then, we need to make migrations again. But, after make migrations, I
> found that there is an error when migrating. The migrations strategy
> somehow need to rename the table to myapp_dog__old, then create new table
> myapp_dog, and then copy all records in myapp_dog__old to myapp_dog. It
> raise error when using sqlite becase the SQL query looks like this:
>
> {{{
> INSERT INTO "myapp_dog" () SELECT FROM "myapp_dog__old"
> }}}
>
> This happens because dog model has no fields.
New description:
Consider we have the following model:
{{{
class Animal(models.Model):
name = models.CharField("Name", max_length=256)
age = models.IntegerField("Age")
class Cat(Animal):
pass
class Dog(Animal):
pass
}}}
Lets say, Cat and Dog model don't have fields yet because we don't know
yet the requirements. We create migrations first to start working with
this simple model. But, someday we realize that Dog model is no longer
needed, so we need to delete it. The model became like this:
{{{
class Animal(models.Model):
name = models.CharField("Name", max_length=256)
age = models.IntegerField("Age")
class Cat(Animal):
pass
}}}
And then, we need to make migrations again. But, after make migrations, I
found that there is an error when migrating. The migrations strategy
somehow need to rename the table to myapp_dog__old, then create new table
myapp_dog, and then copy all records in myapp_dog__old to myapp_dog. It
raise error when using sqlite becase the SQL query looks like this:
{{{
INSERT INTO "myapp_dog" () SELECT FROM "myapp_dog__old"
}}}
This happens because dog model has no fields. It generates migrations like
this:
{{{
operations = [
migrations.RemoveField(
model_name='dog',
name='animal_ptr',
),
migrations.DeleteModel(
name='Dog',
),
]
}}}
But, it should be just like this:
{{{
operations = [
migrations.DeleteModel(
name='Dog',
),
]
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/29592#comment:1>
* status: new => assigned
* owner: nobody => Jauhar Arifin
--
Ticket URL: <https://code.djangoproject.com/ticket/29592#comment:2>
Old description:
> Consider we have the following model:
>
> {{{
> class Animal(models.Model):
> name = models.CharField("Name", max_length=256)
> age = models.IntegerField("Age")
>
> class Cat(Animal):
> pass
>
> class Dog(Animal):
> pass
>
> }}}
>
> Lets say, Cat and Dog model don't have fields yet because we don't know
> yet the requirements. We create migrations first to start working with
> this simple model. But, someday we realize that Dog model is no longer
> needed, so we need to delete it. The model became like this:
>
> {{{
> class Animal(models.Model):
> name = models.CharField("Name", max_length=256)
> age = models.IntegerField("Age")
>
> class Cat(Animal):
> pass
> }}}
>
> And then, we need to make migrations again. But, after make migrations, I
> found that there is an error when migrating. The migrations strategy
> somehow need to rename the table to myapp_dog__old, then create new table
> myapp_dog, and then copy all records in myapp_dog__old to myapp_dog. It
> raise error when using sqlite becase the SQL query looks like this:
>
> {{{
> INSERT INTO "myapp_dog" () SELECT FROM "myapp_dog__old"
> }}}
>
> This happens because dog model has no fields. It generates migrations
> like this:
>
> {{{
> operations = [
> migrations.RemoveField(
> model_name='dog',
> name='animal_ptr',
> ),
> migrations.DeleteModel(
> name='Dog',
> ),
> ]
> }}}
>
> But, it should be just like this:
>
> {{{
> operations = [
> migrations.DeleteModel(
> name='Dog',
> ),
> ]
> }}}
New description:
class Cat(Animal):
pass
class Dog(Animal):
pass
}}}
class Cat(Animal):
pass
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/29592#comment:3>
* status: assigned => closed
* resolution: => duplicate
Comment:
Duplicate of #24424.
See https://code.djangoproject.com/ticket/24424#comment:23
--
Ticket URL: <https://code.djangoproject.com/ticket/29592#comment:4>