【问题标题】:Django successful migrate but didn't create table on MYSQLDjango 成功迁移但没有在 MYSQL 上创建表
【发布时间】:2020-05-21 14:41:37
【问题描述】:

谁能帮帮我。

起初,我为我的 APP 创建了一个 sqlite DB,但现在需要将其迁移到 MYSQL 中。

在 SQLITE 中一切正常,但是当我迁移到 MYSQL 时,它并没有创建表。

提前感谢那些愿意提供帮助的人。


models.py

from django.db import models

class sslDomain(models.Model):
    domain = models.CharField(max_length=20, default='')
    expiration = models.TextField(max_length=50, default='')
    date_now = models.TextField(max_length=50, default='')
    status = models.IntegerField(max_length=50, default=0)
    daysleft = models.TextField(max_length=50, default='')

    def __str__(self):
        return self.domain

class logsTable(models.Model):
    logs_field = models.TextField(max_length=100, default='')

    def ___str__(self):
        return self.id

auth_db.py(我的 DBrouter)

from .apps import *

class AuthSslDB:
    """
    A router to control all database operations on models in the
    auth application.
    """
    def db_for_read(self, model, **hints):
        """
        Attempts to read auth models go to auth_db.
        """
        if model._meta.app_label == SsldomainsConfig.name:
            return 'argus_v2_db'
        return None

    def db_for_write(self, model, **hints):
        """
        Attempts to write auth models go to auth_db.
        """
        if model._meta.app_label == SsldomainsConfig.name:
            return 'argus_v2_db'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        """
        Allow relations if a model in the auth app is involved.
        """
        if obj1._meta.app_label == SsldomainsConfig.name or \
           obj2._meta.app_label == SsldomainsConfig.name:
           return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        Make sure the auth app only appears in the 'auth_db'
        database.
        """
        if app_label == SsldomainsConfig:
            return db == 'argus_v2_db'
        return None

settings.py

'argus_v2_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'argus_v2',
    'USER': 'yrollrei',
    'PASSWORD': '****',
    'HOST': '*.*.*.*',
    'PORT': '*',
}

DATABASE_ROUTERS = ['SSLDOMAINS.auth_db.AuthSslDB']

【问题讨论】:

  • 我用过这个。 ./manage.py makemigrations SSLDOMAINS ./manage.py migrate --database=argus_v2_db SSLDOMAINS

标签: python mysql django database-migration


【解决方案1】:

我刚刚注意到,如果我创建不是来自 sqlite 的新表,它就可以工作。

我的问题是通过在 models.py 中克隆我的类并重命名它来解决的。

希望它对其他有同样问题的人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-16
    • 2017-09-15
    • 2015-08-03
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-06
    • 2021-05-04
    相关资源
    最近更新 更多