- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 South 来生成和应用迁移,而不是自己管理。不幸的是,South 拒绝实际做任何事情。抄录如下:
[graffias:~/testing.tustincommercial.com/oneclickcos]$ python ./manage.py schemamigration mainapp --auto
You cannot use --auto on an app with no migrations. Try --initial.
[graffias:~/testing.tustincommercial.com/oneclickcos]$ python ./manage.py schemamigration mainapp --initial
+ Added model mainapp.CompanyUK
+ Added model mainapp.CompanyName
+ Added model mainapp.Individual
+ Added model mainapp.Director
+ Added model mainapp.DirectorsIndividual
+ Added model mainapp.DirectorsCorporate
+ Added model mainapp.ShareCapitalClass
+ Added model mainapp.Member
+ Added model mainapp.MembersIndividual
+ Added model mainapp.MemberGeneric
+ Added model mainapp.CompanyManager
+ Added model mainapp.PendingRegistration
+ Added model mainapp.PendingAuthorisation
Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate mainapp
[graffias:~/testing.tustincommercial.com/oneclickcos]$ python ./manage.py migrate mainapp
Running migrations for mainapp:
- Nothing to migrate.
- Loading initial data for mainapp.
No fixtures found.
[graffias:~/testing.tustincommercial.com/oneclickcos]$
如您所见,South 认为无事可做。然而,后三个模型是全新的,并且在数据库中没有表。
除了切换数据库以使 South 再次工作之外,我还能做些什么吗?
我无意为项目的其余部分手动编写迁移,但如果有帮助,我会编写一个迁移。
最佳答案
我猜你是因为没有从 ./manage.py convert_to_south mainapp
开始而惹上了麻烦。也许您可以通过以下方式纠正此问题:
(1) 让南方相信你没有执行第一次迁移,所以归零
./manage.py migrate --fake mainapp zero
(2) Migrate for real 到第一次迁移。
./manage.py migrate mainapp
但是对于我能回答的问题,您的数据库中已经有一些没有 South 的模型,否则您不必使用 --initial
。如果是这样,它可能会提示列已经存在。
您可以通过以下方式改变这种情况:
(1) 通过删除 mainapp/migrations/0001_initial.py 消除第一个 schemamigration。您不需要直接摆弄 South 数据库表,--delete-ghost-migrations
会处理这件事。
(2) ./manage.py syncdb
South 希望数据库与模型同步。
(3) ./manage.py convert_to_south mainapp
实际让 South 处理数据库和迁移。
(4) ./manage.py migrate --delete-ghost-migrations mainapp
移动到第一个迁移并从数据库中删除您从 migrations/中删除的旧的第一个迁移
关于python - South 不会为现有应用程序生成或应用迁移,更改要迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300316/
我正在尝试用 Python 和 Django 开发一个项目,使用 South 进行数据库迁移。 我对南方很陌生,目前在尝试运行任何命令syncdb或runserver时面临一个问题: “您的数据库没有
我有两个类,其中一个是另一个类的后代,我想让它们都是同一个基类的兄弟类。 前: from django.db import models class A(models.Model): name
我是 django 的新手,我从南方收到这个错误,但我不知道我错过了什么。我在寻找答案,但找不到任何东西。 There is no South database module 'south.db.po
安装 Django 后,我收到此错误消息(当我想运行迁移或运行服务器时): There is no South database module 'south.db.mysql' for your da
尝试将django从1.7.4升级到1.8;然而,当我运行服务器时,我现在得到 您的数据库没有 South 数据库模块“south.db.mysql”。请选择受支持的数据库,检查 SOUTH_DATA
我刚刚开始使用 South(终于),它确实是一个很棒的工具。我启动了一个项目并进行了一些初始迁移以感受南方的感觉。我现在刚刚将这个项目 git 克隆到一台新机器上。没有数据库数据,因为还没有数据输入。
使用他人代码的分支,我添加了一个模型字段并进行了通常的自动迁移: ~ $ django_admin.py migrate mezzanine_slides --auto You cannot use
South 尊重数据库路由器吗?我设置了路由器以将某些应用程序路由到一个数据库,并将所有其他应用程序路由到默认数据库。我什至确保南迁移历史表在两个数据库中。但是我不能让 South 只在适当的数据库中
我有一个模型 class Mystery(models.Model): first = models.CharField(max_length=256) second = models
因此,我向 Django 模型字段添加了一个默认值,然后运行: $ python manage.py schemamigration myapp --auto 似乎什么都没有改变。 什么啊? 谢谢!
我改变了我的模型: class DistList(models.Model): creator = models.ForeignKey(User, related_name='creator')
我将一些数据批量加载到我的 Postgresql 数据库中,却发现所有数据都有点不对。为了纠正这个问题,我刷新数据库以重新加载正确的数据。 数据重新加载,我对模型进行了更改并应用了正常的 ./mana
我正在尝试重置我的南迁移历史,但无法为 myapp 运行迁移。我的 settings.py 是: ... 'south', 'myapp', 'allauth', 'allauth.account',
我在一个带有 postgres 数据库的新站点上使用 south 和 django。我正在尝试进行初始迁移,但出现以下错误 django.db.utils.DatabaseError: invalid
我正在尝试开始使用 South。我有一个现有数据库并添加了 South(syncdb、schemamigration --initial)。 然后,我更新了 models.py 以添加一个字段并运行
我有以下名为 UnixTimestampField 的类: from django.db import models from datetime import datetime from time i
让我感到困惑。假设我们有一个向南迁移的 Django 项目。目前,生产项目版本为 A , 开发中的版本 B .现在让我们假设版本 B已安装到生产环境中: 安装新代码 运行 ./manage.py sy
我最近开始在我的 Django 项目中使用 South 进行迁移。一切都很顺利,直到最近我遇到了一个特殊的问题。 我的项目中有两个应用程序,例如 App-A 和 App-B。 App-A 中的模型具有
我正在新的开发环境中部署一个项目。 当我使用 South 时,我做了: $ python manage.py syncdb --all $ python manage.py migrate --fak
我正在尝试使用现有数据转发迁移模型。该模型有一个新字段,其约束为 unique=True 和 null=False。 当我做 ./manage.py schemamigration myapp --a
我是一名优秀的程序员,十分优秀!