Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.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安装South时出现问题(无法创建South_migrationhistory表)_Python_Django_Migration_Django South - Fatal编程技术网

Python 使用Django安装South时出现问题(无法创建South_migrationhistory表)

Python 使用Django安装South时出现问题(无法创建South_migrationhistory表),python,django,migration,django-south,Python,Django,Migration,Django South,我似乎无法让它工作 我需要南方为一堆应用程序进行迁移 下载南方0.7.3 解压缩后,运行setup.py develope(如图中所示) 通过转到python解释器并执行(无错误),仔细检查它是否处于应该的位置 南部进口 我知道 同步。。。没有找到固定装置 Synced: > django.contrib.auth > django.contrib.contenttypes > django.contrib.sessions > django.contrib.s

我似乎无法让它工作

我需要南方为一堆应用程序进行迁移

  • 下载南方0.7.3
  • 解压缩后,运行setup.py develope(如图中所示)
  • 通过转到python解释器并执行(无错误),仔细检查它是否处于应该的位置

    南部进口

  • 我知道

  • 同步。。。没有找到固定装置

    Synced:
     > django.contrib.auth
     > django.contrib.contenttypes
     > django.contrib.sessions
     > django.contrib.sites
     > django.contrib.messages
     > django.contrib.admin
    
    Not synced (use migrations): 
     - south (use ./manage.py migrate to migrate these)
    
    -在这一点上,据我所知,南方应该是同步的,对吗? 之后我做的任何事情都会抱怨数据库中没有south_migrationhistory表


    另外,我正在Windows7上使用Django 1.2.7和python 2.6,在我看来,这就像是南方的一个bug

    这也可能是因为做了错误的事情,比如:运行
    schemamigration--auto-south
    等等。我的建议是通过运行
    python setup.py install
    或通过easy\u installpip来安装它

    South文档说:“一旦添加了South,您就需要运行./manage.py syncdb来生成South迁移跟踪表(出于各种原因,South不为自己的模型使用迁移)。”

    但您的输出表明,south没有为自己的模型制作表格,因为它认为south应用程序使用了迁移

    作为一种解决方法,您可以使用

    python manage.py syncdb --all
    
    这会使所有表(无论迁移如何)同步并

    python manage.py migrate --fake 
    

    伪造迁移。

    对于没有现有表的新应用程序,添加south的步骤如下:

  • 将“south”添加到已安装的应用程序列表中

  • 确保您需要迁移的应用程序也在已安装的应用程序中

  • 运行./manage.py syncdb(或从项目目录中运行python manage.py syncdb)。这会将迁移表添加到数据库中

  • 在命令行中,执行./manage.py schemamigration yourappname--initial

  • 运行./manage.py迁移您的AppName


  • 根据您给出的错误,听起来在步骤1和步骤2之后,您忘记运行syncdb来创建迁移表,而South应用程序找不到存储架构迁移的位置。

    我遇到了同样的问题。事实证明,通过一些魔法,我已经在hte south应用程序中创建了迁移

    发现人:

    ~ $ # cd to python library
    ~ $ cd `python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"`
    python2.7/site-packages $ cd south
    python2.7/site-packages/south $ ls migrations
       0001_initial.py  0002_initial.py 0003_initial.py __init__.py
    
    这些都是不好的,不应该存在,这是触发南方跳过自己的原因。 删除所有东西,重新安装,然后syncdb再次工作

    python2.7/site-packages $ rm -rf south* South*
    ~ $ pip install south
    

    据我所知,您尝试运行了./manage.py migrate,但没有出现这样的表错误?如果要将South添加到现有应用程序中,则必须执行./manage.py convert_to_South yourappname,这会“伪造”您的第一次迁移。请注意convert_to_South命令的South文档中的这句话:convert_to_South命令仅在运行它的第一台计算机上完全有效。一旦您将它所做的初始迁移提交到您的VCS中,您就必须运行./manage.py migrate myapp 0001--在每台拥有代码库副本的机器上都是假的(首先确保它们是最新的模型和架构)。感谢您提供详细的反馈。我在步骤4中运行了syncdb(步骤3是一个纯可选的双重检查,以查看south是否在正确的文件夹中,因为我的计算机上安装了2个python。太棒了。--所有问题都解决了,谢谢!。我确实使用了python setup.py install来安装south。这似乎是安装了它,但不知怎的,它只是没有创建所需的表。为此,我四处搜寻了4个小时--所有。非常感谢。django.contrib.admin没有被“python manage.py syncdb”接受。它一直告诉我运行“migrate”。运行migrate会说“没有新的更改”。因此我没有任何管理表。“--all”继续进行并为我创建if。一切都很好,结局都很好!
    python2.7/site-packages $ rm -rf south* South*
    ~ $ pip install south