Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 syncdb在SQLite中工作,在MySQL中失败_Python_Mysql_Django - Fatal编程技术网

Python Django syncdb在SQLite中工作,在MySQL中失败

Python Django syncdb在SQLite中工作,在MySQL中失败,python,mysql,django,Python,Mysql,Django,我是MySQL的新手,在生产中没有使用Django。我一直在使用SQLite在Windows7下进行开发,并试图将代码转移到运行MySQL的Linux服务器上 当我运行syncdb时,它创建了前三个表,然后抛出了一个错误: Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/gs

我是MySQL的新手,在生产中没有使用Django。我一直在使用SQLite在Windows7下进行开发,并试图将代码转移到运行MySQL的Linux服务器上

当我运行syncdb时,它创建了前三个表,然后抛出了一个错误:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/base.py", line 415, in handle
    return self.handle_noargs(**options)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/core/management/commands/syncdb.py", line 96, in handle_noargs
    sql, references = connection.creation.sql_create_model(model, self.style, seen_models)
  File "/home/gsdemo01/project_file/lib/python3.3/site-packages/django/db/backends/creation.py", line 83, in sql_create_model
    model, f, known_models, style)
TypeError: sql_for_inline_foreign_key_references() takes 4 positional arguments but 5 were given
这在SQLite中工作得很好,因此它似乎要么是python连接器包的问题,要么是MySQL本身的问题

提前感谢您的帮助

更新:


通过反复试验,我确定问题肯定出在外键字段上。如果我注释出表是正确创建的。据我所知,Yogesh建议的修改与代码中已有的修改相匹配,因此,如果有人有任何其他建议,我很乐意听取。

如果您使用这些病毒Python3.3 Django1.6,请使用MySql官方中间件MySql-connector-python-1.1.4-py3.3

解决方案: 在站点包和修改方法中查找:creation.py:sql\u for\u inline\u foreign\u key\u引用是:您只能修改方法参数

def sql_for_inline_foreign_key_references (self, model, field, known_models, style):

这不是一个好的解决方案,这是删除错误的替代方案。

我在这里发布此解决方案是为了方便将来遇到此问题的用户。我的搭档花了好几个小时才找到答案

解决方案的简单部分是编辑creation.py以进行更改

def sql_for_inline_foreign_key_references (self, model, field, known_models, style):

在site packages/django/db/backends/creation.py中有一个具有相同名称和几乎相同语法的例程,但您需要site packages/django/db/backends/mysql/creation.py中的例程

不过,您还没有完成,因为模块会被复制到site packages/mysql/connector/django/creation.py,并且在编辑时不会自动发生,所以您需要手动复制它。我删除了.pyc文件,但“不应该”是必要的


当然,这些都不是必需的…

对于使用MacOSX 10.9(又名Mavericks)或更高版本的Mac用户,此解决方案工作得非常完美,但是如果您使用python3从mysql.connector编辑creation.py文件,请确保您的位置正确:

供参考:

环境:Python3/Mysql-connector-1.1.4/Django-1.6.1


我们正在使用所有这些版本。我们按照指定更改了调用(尽管它使用了“f”而不是“field”)。我们得到的只是“sql for_inline_foreign_key_references()接受4个位置参数,但有6个被赋予了”python3.3/site-packages/django/db/backends/creation.py replace def sql_for_inline_foreign_key_references(self、model、field、known_models、style):我想我以前找错地方了。这就是我在安装中对该定义的定义:def sql_for_inline_foreign_key_references(self、model、field、known_models、style):我看不出这与您的建议有什么不同。我需要改变什么?
def sql_for_inline_foreign_key_references (self, model, field, known_models, style):
def sql_for_inline_foreign_key_references (self, *args):
/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/mysql/connector/django/creation.py