Django 4.1执行migrate时auth表报ValueError: too many values to unpack
Django 4.1 migrate时auth表报错:ValueError: too many values to unpack (expected 2)
执行python manage.py migrate时触发auth.0001_initial迁移报错,已尝试删除数据库及所有迁移文件重新初始化,但问题依旧,使用Django 4.1版本。错误日志如下:
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, generator, sessions Running migrations: Applying auth.0001_initial...Traceback (most recent call last): File "manage.py", line 22, in <module> main() File "manage.py", line 18, in main execute_from_command_line(sys.argv) File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line utility.execute() File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 440, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/base.py", line 402, in run_from_argv self.execute(*args, **cmd_options) File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/base.py", line 448, in execute output = self.handle(*args, **options) File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/base.py", line 96, in wrapped res = handle_func(*args, **kwargs) File "<redacted>/venv/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 349, in handle post_migrate_state = executor.migrate( File "<redacted>/venv/lib/python3.8/site-packages/django/db/migrations/executor.py", line 135, in migrate state = self._migrate_all_forwards( File "<redacted>/venv/lib/python3.8/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards state = self.apply_migration( File "<redacted>/venv/lib/python3.8/site-packages/django/db/migrations/executor.py", line 255, in apply_migration migration_recorded = True File "<redacted>/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/schema.py", line 39, in __exit__ self.connection.check_constraints() File "<redacted>/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 289, in check_constraints for column_name, ( ValueError: too many values to unpack (expected 2)
排查方案
- 检查自定义User模型:如果项目中自定义了用户模型,确认
settings.py里的AUTH_USER_MODEL配置正确,模型中的关联字段(如OneToOneField、ForeignKey)没有重复定义或语法错误,避免和默认auth模型产生冲突。 - 升级SQLite版本:Django 4.1要求SQLite版本≥3.24.0,旧版本SQLite在处理约束检查时可能出现解析错误,升级到符合要求的版本后重试迁移。
- 排查第三方包冲突:暂时禁用所有auth相关的第三方包(如django-allauth、django-rest-framework-simplejwt等),执行迁移看是否正常,逐步排查出冲突的包。
- 检查迁移文件:确认没有手动修改过auth模块的迁移文件,以及自身app的迁移文件中涉及auth模型的部分是否存在语法错误,必要时重新生成迁移文件。
- 重建虚拟环境:删除现有虚拟环境,重新创建并安装Django 4.1及依赖包,避免依赖版本混乱导致的兼容性问题。
内容的提问来源于stack exchange,提问作者degenTy
相关产品推荐
相关产品推荐

