Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django TypeError:allow_migrate()获取了意外的关键字参数';型号名称';_Python_Mysql_Django - Fatal编程技术网

Python Django TypeError:allow_migrate()获取了意外的关键字参数';型号名称';

Python Django TypeError:allow_migrate()获取了意外的关键字参数';型号名称';,python,mysql,django,Python,Mysql,Django,因此,我将我的Django项目复制到一个新服务器上,复制环境并将表导入本地mysql数据库 但是当我尝试运行makemigrations时,它给出了一个TypeError:allow\u migrate()得到了一个意外的关键字参数“model\u name” 这是完整的堆栈跟踪: Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line

因此,我将我的Django项目复制到一个新服务器上,复制环境并将表导入本地mysql数据库

但是当我尝试运行makemigrations时,它给出了一个TypeError:allow\u migrate()得到了一个意外的关键字参数“model\u name”

这是完整的堆栈跟踪:

Traceback (most recent call last):
   File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 305, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 353, in execute
self.check()
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 385, in check
include_deployment_checks=include_deployment_checks,
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/management/base.py", line 372, in _run_checks
return checks.run_checks(**kwargs)
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "/home/cicd/.local/lib/python2.7/site-packages/django/core/checks/model_checks.py", line 30, in check_all_models
errors.extend(model.check(**kwargs))
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/base.py", line 1266, in check
errors.extend(cls._check_fields(**kwargs))
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/base.py", line 1337, in _check_fields
errors.extend(field.check(**kwargs))
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 893, in check
errors = super(AutoField, self).check(**kwargs)
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 208, in check
errors.extend(self._check_backend_specific_checks(**kwargs))
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 310, in _check_backend_specific_checks
if router.allow_migrate(db, app_label, model_name=self.model._meta.model_name):
File "/home/cicd/.local/lib/python2.7/site-packages/django/db/utils.py", line 300, in allow_migrate
allow = method(db, app_label, **hints)
TypeError: allow_migrate() got an unexpected keyword argument 'model_name'
回溯(最近一次呼叫最后一次):
文件“manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/_init__.py”,第367行,从命令行执行
utility.execute()
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/_init__.py”,执行中第359行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/base.py”,第305行,在运行中,从
self.execute(*args,**cmd_选项)
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/base.py”,执行中第353行
self.check()
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/base.py”,第385行,选中
包括部署检查=包括部署检查,
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/management/base.py”,第372行,在运行检查中
返回检查。运行检查(**kwargs)
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/checks/registry.py”,运行检查中的第81行
新建错误=检查(应用程序配置=应用程序配置)
文件“/home/cicd/.local/lib/python2.7/site packages/django/core/checks/model_checks.py”,check_all_models中第30行
错误。扩展(模型检查(**kwargs))
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/models/base.py”,第1266行,选中
错误。扩展(cls.\U检查\U字段(**kwargs))
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/models/base.py”,第1337行,在检查字段中
错误.扩展(字段.检查(**kwargs))
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/models/fields/_init__.py”,第893行,选中
错误=超级(自动字段,自)。检查(**kwargs)
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/models/fields/_init__.py”,第208行,选中
错误.扩展(自我检查后端检查特定检查(**kwargs))
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/models/fields/_init__.py”,第310行,在后端特定的检查中
如果路由器.allow\u迁移(数据库,应用程序标签,模型名称=self.model.\u元模型名称):
文件“/home/cicd/.local/lib/python2.7/site packages/django/db/utils.py”,第300行,在allow\u migrate中
允许=方法(数据库、应用程序标签、**提示)
TypeError:allow_migrate()获得意外的关键字参数“model_name”

如果您能帮助我调试此错误并试图了解导致此错误的原因,我将不胜感激。

当我从1.6.*移动到1.10时,我遇到了相同的问题。最后,我找到了由数据库\u路由器引起的问题。

我写的旧版本是这样的

class OnlineRouter(object):
    # ... 
    def allow_migrate(self, db, model):
        if db == 'myonline':
            return model._meta.app_label == 'online'
        elif model._meta.app_label == 'online':
            return False
        return None
它是这样重写的

class OnlineRouter(object):
    # ... 
    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if db == 'my_online':
            return app_label == 'online'
        elif app_label == 'online':
            return False
        return None

更多详细信息请参见

可能与此相关:。您在新服务器上使用的是哪个版本的Django?是的,所以我确实从1.9.4迁移到了1.10,但这是否会导致这种情况,因为您链接的此功能更改是从1.8迁移到1.9,并降级到1.9.4修复了此问题,谢谢elethan。但我仍然想知道为什么?实际上,您可以尝试再次升级到1.10,而不做任何其他更改。看起来
allow_migrate()
没有在1.10或1.9.4中使用
model_name
参数,这使得您的服务器上有一些过时的
.pyc
文件,降级可能会将它们清除。这只是猜测,但可能值得一试。请注意,elethan链接的
allow\u migrate()
的旧签名在1.8中被弃用。如果使用
-Wall
选项在1.9上运行该代码,您应该会看到一个弃用警告,但旧签名仍然有效。它在1.10中被正确删除,这解释了您看到的错误。