每当我尝试在我的 Django 项目之一中使用 South 进行迁移时,我都无法弄清楚如何避免此错误:
错误:
为 askbot 运行迁移:
- 向前迁移到 0006_auto__del_field_tagplus_tag_ptr__add_field_tagplus_id__add_field_tagpl。
askbot:0006_auto__del_field_tagplus_tag_ptr__add_field_tagplus_id__add_field_tagpl
致命错误 - 以下 SQL 查询失败:ALTER TABLE "tagplus" ADD COLUMN "id" serial NOT >NULL PRIMARY KEY DEFAULT -1; 错误是:为表“tagplus”的“id”列指定了多个默认值
迁移错误:>askbot:0006_auto__del_field_tagplus_tag_ptr__add_field_tagplus_id__add_field_tagpl DatabaseError:为表“tagplus”的“id”列指定了多个默认值
迁移文件 0006 代码(部分):
class Migration(SchemaMigration):
def forwards(self, orm):
# Deleting field 'TagPlus.tag_ptr'
db.delete_column(u'tagplus', u'tag_ptr_id')
# Adding field 'TagPlus.id'
db.add_column(u'tagplus', u'id',
self.gf('django.db.models.fields.AutoField')(default=0, primary_key=True),
keep_default=False)
# Adding field 'TagPlus.name'
db.add_column(u'tagplus', 'name',
self.gf('django.db.models.fields.CharField')(default=0, unique=True, max_length=255),
keep_default=False)
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:
我猜这个错误与我在创建迁移文件时被提示的这个选择有关。
? The field 'TagPlus.tag_ptr' does not have a default specified, yet is …Run Code Online (Sandbox Code Playgroud) 我是SQL的新手,我正在尝试选择列Foto_municipis:
askdbase4=# select * from avatar_avatarx;
id | llista_municipis | Foto_municipis | primary | date_uploaded
----+------------------+-----------------+---------+------------------------
1 | Tore | tore.jpg | t | 2014-06-05 01:19:40+02
2 | Calldetenes | calldetenes.jpg | f | 2014-06-05 23:24:18+02
3 | Rupit i Pruit | baixa.jpeg | f | 2014-06-16 03:09:48+02
4 | Olost | olost.jpg | f | 2014-06-16 23:20:05+02
(4 rows)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我可以成功选择llista municipis:
SELECT llista_municipis FROM avatar_avatarx;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试选择Foto_municipis时,这就是我得到的:
askdbase4=# SELECT llista_municipis FROM avatar_avatarx;
ERROR: column "Foto_municipis" does not exist
LINE 1: …Run Code Online (Sandbox Code Playgroud)