我正试图开始南方.我有一个现有的数据库,我添加了South(syncdb,schemamigration --initial).
然后,我更新models.py了添加字段并运行./manage.py schemamigration myapp --auto.它似乎找到了该领域并说我可以应用它./manage.py migrate myapp.但是,这样做会给出错误:
django.db.utils.DatabaseError: table "myapp_tablename" already exists
Run Code Online (Sandbox Code Playgroud)
tablename是第一个列出的表models.py.
我正在运行Django 1.2,South 0.7
我正在使用sqlite3和pycharm来了解有关django的更多信息,并且谷歌搜索发现南方建议在创建模型后更容易修改模型.
我正在尝试遵循http://south.aeracode.org/docs/tutorial/part1.html#starting-off上的建议.
到目前为止,我最成功的是创建一个简单的模型并在向south_apps添加南之前运行syncdb.这样就创建了初始表,我有机会创建一个超级用户.(如果没有用户,Django管理员似乎会担心).
然后我将south添加到installed_apps,并运行django_manage.py schemamigration书签--initial
它似乎工作正常.创建一个名为migrations的新目录,其中包含我的app文件夹中的几个文件以及一条令人鼓舞的消息."已创建0001_initial.py.您现在可以将此迁移应用于:./ manage.py迁移书签"
下一步 - django_manage.py"迁移书签会生成以下错误消息:django.db.utils.DatabaseError:没有这样的表:south_migrationhistory.
我认为该表将在第一个schememigration步骤中创建.我错过了什么?有人可以帮忙吗?
玛格
我正在尝试使用South将新的URLField添加到模型中,例如:
class Document(models.Model):
text = models.TextField()
reference_page = models.URLField(blank=True, null=True)
source_page = models.URLField(blank=True, null=True) # new field
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,python manage.py schemamigration myapp --auto我得到错误:
DatabaseError: column myapp_document.source_page does not exist
LINE 1: ...ext", "myapp_document"."reference_page", "myapp_doc...
Run Code Online (Sandbox Code Playgroud)
我正在使用PostgreSQL作为我的数据库后端.我正确地初始化了我的南方应用程序,并且已经为它运行了迁移.我确保我的Django和South安装是最新的.
为什么现在会给我这个错误?
编辑:奇怪的是,如果我手动创建数据库中的列,则schemamigration调用成功,但当然migrate调用失败,直到我手动删除列.这很奇怪.