Opened 9 years ago
Last modified 9 years ago
#27456 closed Bug
Changing the unique paramater from True to False has no effect on MySQL — at Initial Version
| 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
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, makemigrations and migrate
from django.db import models
class TestModel(models.Model):
name = models.CharField(max_length=100, unique=False)
surname = models.CharField(max_length=50)
$ 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
Note:
See TracTickets
for help on using tickets.