【发布时间】:2019-12-30 20:26:44
【问题描述】:
我有一个抽象模型:
class ChronoModel(models.Model):
created = models.DateTimeField(
u"Create time",
auto_now_add=True,
db_index=True
)
modified = models.DateTimeField(
u"Last change time",
auto_now_add=True,
db_index=True
)
class Meta(object):
abstract = True
ordering = ('-created', )
我有几个从 ChronoModel 继承的模型。我的问题对所有人来说都是一样的——例如以下模型之一:
class BatchSession(ChronoModel):
spent_seconds = models.BigIntegerField(
u"spent_seconds", default=0, editable=False)
max_seconds = models.BigIntegerField(
u"max_seconds", null=True, blank=True)
comment = models.CharField(
u"comment", max_length=255, null=True, blank=False,
unique=True)
class Meta(ChronoModel.Meta):
verbose_name = u'Session'
verbose_name_plural = u'Sessions'
ordering = ('-modified',)
db_table = 'check_batchsession'
def __unicode__(self):
return u'#{}, {}/{} sec'.format(
self.id, self.spent_seconds, self.max_seconds)
创建和应用迁移后,“创建”和“修改”字段没有索引
命令
python manage.py sqlmigrate app_name 0001 | grep INDEX
给我看
BEGIN;
....
CREATE INDEX `check_batchsession_e2fa5388` ON `check_batchsession` (`created`);
CREATE INDEX `check_batchsession_9ae73c65` ON `check_batchsession` (`modified`);
....
COMMIT;
但是mysql返回我:
mysql> SHOW INDEX FROM check_batchsession;
+--------------------+------------+--------------------------------------------------+--------------+-------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name |
+--------------------+------------+--------------------------------------------------+--------------+-------------+
| check_batchsession | 0 | PRIMARY | 1 | id |
| check_batchsession | 0 | check_batchsession_comment_558191ed0a395dfa_uniq | 1 | comment |
+--------------------+------------+--------------------------------------------------+--------------+-------------+
2 rows in set (0,00 sec)
我该如何解决? Django 1.8.18 MySQL 5.6
【问题讨论】:
-
您是否真正创建并运行迁移?
-
你做了
migrate你的数据库? -
真的是老代码了。第一次迁移是由南进行的,我不能保证迁移成功。我在旧提交中找到了我的模型:“'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now', 'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}), " and "'modified': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime .now', 'auto_now': 'True', 'db_index': 'True', 'blank': 'True'})" 在我的模型中。
-
我的新迁移是由 Django 1.7 创建的并且是伪造的。我可以在所有模型上重新创建索引吗?
标签: mysql django django-models django-migrations mysql-5.6