gpt4 book ai didi

mysql - Django db_index=True 迁移后不创建索引

转载 作者:行者123 更新时间:2023-11-29 15:41:00 24 4
gpt4 key购买 nike

我有一个抽象模型:

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.18MySQL 5.6

最佳答案

这是 Django South 的麻烦。

我不知道发生了什么,因为我的所有索引都没有创建。 (如果有人知道 - 请在评论中写下)

我的解决方案:

1) 从 ChronoModel 中的所有字段中删除 db_index=True2)进行迁移3)迁移3) 将 db_index=True 添加到 ChronoModel 中的所有字段4)进行迁移5)迁移

我的所有索引均已恢复

关于mysql - Django db_index=True 迁移后不创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com