Opened 9 years ago
Last modified 9 years ago
#27456 closed Bug
Changing the unique parameter from True to False has no effect on MySQL — at Version 3
| Reported by: | Vadim | Owned by: | nobody |
|---|---|---|---|
| Component: | Migrations | Version: | 1.8 |
| Severity: | Normal | Keywords: | mysql |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Steps to reproduce:
- Create a model:
from django.db import models
class TestModel(models.Model):
name = models.CharField(max_length=100, unique=True)
surname = models.CharField(max_length=50)
- makemigrations && migrate
$ ./manage.py sqlmigrate testapp 0001_initial BEGIN; CREATE TABLE `testapp_testmodel` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(100) NOT NULL UNIQUE, `surname` varchar(50) NOT NULL); COMMIT;
$ cat testapp/migrations/0001_initial.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='TestModel',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(unique=True, max_length=100)),
('surname', models.CharField(max_length=50)),
],
),
]
- Set unique to False
from django.db import models
class TestModel(models.Model):
name = models.CharField(max_length=100, unique=False)
surname = models.CharField(max_length=50)
- makemigrations && migrate
- Result is:
$ cat testapp/migrations/0002_auto_20161106_2004.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('testapp', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='testmodel',
name='name',
field=models.CharField(max_length=100),
),
]
$ ./manage.py sqlmigrate testapp 0002_auto_20161106_2004
mysql> show create table testapp_testmodel; +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | testapp_testmodel | CREATE TABLE `testapp_testmodel` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `surname` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0,00 sec)
Notes:
It works well on SQLite
This bug also exists in 1.10
Change History (3)
comment:1 by , 9 years ago
| Summary: | Changing the unique paramater from True to False has no effect on MySQL → Changing the unique parameter from True to False has no effect on MySQL |
|---|
comment:2 by , 9 years ago
comment:3 by , 9 years ago
| Description: | modified (diff) |
|---|
Note:
See TracTickets
for help on using tickets.
According to the description, after creating the second migration you only ran the
sqlmigratecommand, notmigrate. Is the error in your process or your ticket description?