在Django表中设置AUTOINCREMENT值


问题内容

我在mysql中有下表:

CREATE TABLE `portal_asset` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `asset_id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8;

如何在Django中创建同一张表?到目前为止,我有以下内容,但不确定如何设置AUTO_INCREMENT值-

class PortalAsset(models.Model):
    id = models.IntegerField(primary_key=True)
    asset_id = models.IntegerField(unique=True)
    class Meta:
        db_table = u'portal_asset'

如何将AUTO_INCREMENT值设置为从1000000开始?相当于:

alter table portal_asset AUTO_INCREMENT=1000000;

问题答案:

您可以RunSQL在迁移中使用操作来执行必要的SQL:

migrations.RunSQL("ALTER TABLE portal_asset AUTO_INCREMENT=1000000;")

如果尚未运行任何迁移,则可以将其添加到第一次迁移中,以确保在设置新值之前不插入任何行。否则,您将不得不在新迁移中添加此操作。您可以使用创建一个新的空迁移python manage.py makemigrations --empty <yourappname>