django.db.utils.OperationalError: 没有名为accounts_user的数据表,

后端开发 2026-07-10

于是我删除了所有数据库和db.sqlite3,以便重新开始,只保留 __init__py文件。

我在尝试运行 python manage.py migrate 时,遇到了一个“django.db.utils.OperationalError: no such table: accounts_user”错误。我已经在settings.py中导入了模型,如下所示:

AUTH_USER_MODEL = 'accounts.User'

下面是我的accounts/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser, BaseUserManager, PermissionsMixin
from django.utils import timezone


class UserManager(BaseUserManager):
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError('Users must have an email address')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        return self.create_user(email, password, **extra_fields)



class User(AbstractUser):
    ROLE_CHOICES = [
        ('customer', 'Customer'),
        ('vendor', 'Vendor'),
        ('staff', 'Staff'),
        ('admin', 'Administrator'),
    ]

    username = None

    email = models.EmailField(unique=True)
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    is_active = models.BooleanField(default=False)
    user_role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='customer')
    phone_number = models.CharField(max_length=30, blank=True)
    is_verified = models.BooleanField(default=False)
    created_at = models.DateTimeField(default=timezone.now)
    updated_at = models.DateTimeField(auto_now=True)
    address = models.ForeignKey(
        'orders.ShippingAddress',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='default_for_profiles'
    )
    profile_picture = models.ImageField(upload_to='profiles/', blank=True, null=True)

    # Birthday  Fields
    birthday = models.DateField(null=True, blank=True)
    birthday_last_updated = models.DateTimeField(null=True, blank=True)
    ip_address_last_seen = models.GenericIPAddressField(null=True, blank=True)

    # Terms & Conditions Tracking
    agreed_to_terms = models.BooleanField(default=False)
    agreed_at = models.DateTimeField(null=True, blank=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name']

    objects = UserManager()

    def __str__(self):
        return self.email

当我运行python manage.py migrate时,出现了一个错误

错误追踪信息:

Running migrations:
  Applying accounts.0002_initial...Traceback (most recent call last):
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 356, in execute
    return super().execute(query)
           ~~~~~~~~~~~~~~~^^^^^^^
sqlite3.OperationalError: no such table: accounts_user

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\USER\desktop\jewellery_store\backend\manage.py", line 22, in <module>
    main()
    ~~~~^^
  File "C:\Users\USER\desktop\jewellery_store\backend\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
    utility.execute()
    ~~~~~~~~~~~~~~~^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 420, in run_from_argv
    self.execute(*args, **cmd_options)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 464, in execute
    output = self.handle(*args, **options)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 111, in wrapper
    res = handle_func(*args, **kwargs)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\commands\migrate.py", line 353, in handle
    post_migrate_state = executor.migrate(
        targets,
    ...<3 lines>...
        fake_initial=fake_initial,
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 135, in migrate
    state = self._migrate_all_forwards(
        state, plan, full_plan, fake=fake, fake_initial=fake_initial
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 167, in _migrate_all_forwards
    state = self.apply_migration(
        state, migration, fake=fake, fake_initial=fake_initial
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 255, in apply_migration
    state = migration.apply(state, schema_editor)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\migration.py", line 132, in apply
    operation.database_forwards(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        self.app_label, schema_editor, old_state, project_state
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\operations\fields.py", line 110, in database_forwards
    schema_editor.add_field(
    ~~~~~~~~~~~~~~~~~~~~~~~^
        from_model,
        ^^^^^^^^^^^
        field,
        ^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\schema.py", line 328, in add_field
    super().add_field(model, field)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 775, in add_field
    self.execute(sql, params or None)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 204, in execute
    cursor.execute(sql, params)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
    return super().execute(sql, params)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        sql, params, many=False, executor=self._execute
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
    with self.db.wrap_database_errors:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 356, in execute
    return super().execute(query)
           ~~~~~~~~~~~~~~~^^^^^^^
django.db.utils.OperationalError: no such table: accounts_user
(.venv) PS C:\Users\USER\desktop\jewellery_store\backend> python manage.py makemigrations accounts
No changes detected in app 'accounts'
(.venv) PS C:\Users\USER\desktop\jewellery_store\backend> python manage.py migrate
Operations to perform:
  Apply all migrations: accounts, admin, auth, cart, contenttypes, dashboard, logistics, notifications, orders, payment, products, reviews, sessions, vendors, wishlist
Running migrations:
  Applying accounts.0002_initial...Traceback (most recent call last):
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 356, in execute
    return super().execute(query)
           ~~~~~~~~~~~~~~~^^^^^^^
sqlite3.OperationalError: no such table: accounts_user

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\USER\desktop\jewellery_store\backend\manage.py", line 22, in <module>
    main()
    ~~~~^^
  File "C:\Users\USER\desktop\jewellery_store\backend\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
    utility.execute()
    ~~~~~~~~~~~~~~~^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 420, in run_from_argv
    self.execute(*args, **cmd_options)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 464, in execute
    output = self.handle(*args, **options)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\base.py", line 111, in wrapper
    res = handle_func(*args, **kwargs)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\core\management\commands\migrate.py", line 353, in handle
    post_migrate_state = executor.migrate(
        targets,
    ...<3 lines>...
        fake_initial=fake_initial,
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 135, in migrate
    state = self._migrate_all_forwards(
        state, plan, full_plan, fake=fake, fake_initial=fake_initial
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 167, in _migrate_all_forwards
    state = self.apply_migration(
        state, migration, fake=fake, fake_initial=fake_initial
    )
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\executor.py", line 255, in apply_migration
    state = migration.apply(state, schema_editor)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\migration.py", line 132, in apply
    operation.database_forwards(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        self.app_label, schema_editor, old_state, project_state
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\migrations\operations\fields.py", line 110, in database_forwards
    schema_editor.add_field(
    ~~~~~~~~~~~~~~~~~~~~~~~^
        from_model,
        ^^^^^^^^^^^
        field,
        ^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\schema.py", line 328, in add_field
    super().add_field(model, field)
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 775, in add_field
    self.execute(sql, params or None)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\base\schema.py", line 204, in execute
    cursor.execute(sql, params)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
    return super().execute(sql, params)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        sql, params, many=False, executor=self._execute
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
    with self.db.wrap_database_errors:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\USER\desktop\jewellery_store\backend\.venv\Lib\site-packages\django\db\backends\sqlite3\base.py", line 356, in execute
    return super().execute(query)
           ~~~~~~~~~~~~~~~^^^^^^^
django.db.utils.OperationalError: no such table: accounts_user

accounts/migrations/0002_initial.py

# Generated by Django 5.2.13 on 2026-04-12 07:12

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("accounts", "0001_initial"),
        ("auth", "0012_alter_user_first_name_max_length"),
        ("orders", "0001_initial"),
    ]

    operations = [
        migrations.AddField(
            model_name="user",
            name="address",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="default_for_profiles",
                to="orders.shippingaddress",
            ),
        ),
        migrations.AddField(
            model_name="user",
            name="groups",
            field=models.ManyToManyField(
                blank=True,
                help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
                related_name="user_set",
                related_query_name="user",
                to="auth.group",
                verbose_name="groups",
            ),
        ),
        migrations.AddField(
            model_name="user",
            name="user_permissions",
            field=models.ManyToManyField(
                blank=True,
                help_text="Specific permissions for this user.",
                related_name="user_set",
                related_query_name="user",
                to="auth.permission",
                verbose_name="user permissions",
            ),
        ),
    ]

解决方案

错误被路由到我的settings.py,在那里Django没有使用SQLite数据库文件,因此我将其修正为

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章