首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >南迁后无此列

南迁后无此列
EN

Stack Overflow用户
提问于 2013-05-06 10:39:35
回答 2查看 1.2K关注 0票数 1

我在这个问题中遇到了与用户相同的问题,但不幸的是,answer没有解决任何问题。以下是关于我按照给定的说明所发生的事情的一些评论:

当我尝试--delete-ghost-migrations命令时,我得到了一个错误

The app 'tixeng' does not appear to use migrations.

我继续介绍了应用程序的方向和初始化迁移。然后我又试了一次--delete-ghost-migrations

代码语言:javascript
复制
/Users/AaronPardes/Dropbox/Python/home_repos/squidtix/squidtix/virtualenvironments/squidtixENV/lib/python2.7/site-packages/django/utils/hashcompat.py:9: DeprecationWarning:  django.utils.hashcompat is deprecated; use hashlib instead
  DeprecationWarning)

Running migrations for tixeng:
- Nothing to migrate.
- Loading initial data for tixeng.
Installed 0 object(s) from 0 fixture(s)

然后我对我的模型进行了更改,并尝试为这些更改创建一个新的迁移。

代码语言:javascript
复制
^C(squidtixENV)Aarons-MacBook-Pro:squidtix AaronPardes$ ./manage.py schemamigration tixeng --auto
+ Added field for_sale on tixeng.SquidTic
Created 0002_auto__add_field_squidtic_for_sale.py. You can now apply this migration with: ./manage.py migrate tixeng

并应用迁移。

代码语言:javascript
复制
/Users/AaronPardes/Dropbox/Python/home_repos/squidtix/squidtix/virtualenvironments/squidtixENV   /lib/python2.7/site-packages/django/utils/hashcompat.py:9: DeprecationWarning:   django.utils.hashcompat is deprecated; use hashlib instead
  DeprecationWarning)

Running migrations for tixeng:
- Migrating forwards to 0002_auto__add_field_squidtic_for_sale.
> tixeng:0002_auto__add_field_squidtic_for_sale
FATAL ERROR - The following SQL query failed: CREATE TABLE "_south_new_tixeng_squidtic"      ("date_listed" datetime NOT NULL, "event_id" integer NOT NULL, "price" integer NOT NULL, "for_sale" bool NOT NULL DEFAULT 1, "id" integer PRIMARY KEY, "owner_id" integer)
The error was: table "_south_new_tixeng_squidtic" already exists
 ! Error found during real run of migration! Aborting.

 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had 
 ! to leave it in an interim state between migrations.

! You *might* be able to recover with:
 ! The South developers regret this has happened, and would
 ! like to gently persuade you to consider a slightly
 ! easier-to-deal-with DBMS (one that supports DDL transactions)
 ! NOTE: The error which caused the migration to fail is further up.
Error in migration: tixeng:0002_auto__add_field_squidtic_for_sale
DatabaseError: table "_south_new_tixeng_squidtic" already exists

相关信息:

要添加的字段:models.BooleanField(default = True)

创建的迁移:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

    def forwards(self, orm):
        # Adding field 'SquidTic.for_sale'
        db.add_column(u'tixeng_squidtic', 'for_sale',
                  self.gf('django.db.models.fields.BooleanField')(default=True),
                  keep_default=False)


    def backwards(self, orm):
        # Deleting field 'SquidTic.for_sale'
        db.delete_column(u'tixeng_squidtic', 'for_sale')


    models = {
        u'accounts.myprofile': {
            'Meta': {'object_name': 'MyProfile'},
            'favourite_snack': ('django.db.models.fields.CharField', [], {'max_length': '5'}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'mugshot': ('django.db.models.fields.files.ImageField', [], {'max_length': '100',  'blank': 'True'}),
            'privacy': ('django.db.models.fields.CharField', [], {'default': "'registered'", 'max_length': '15'}),
            'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'my_profile'", 'unique': 'True', 'to': u"orm['auth.User']"})
        },
        u'auth.group': {
            'Meta': {'object_name': 'Group'},
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
        },
        u'auth.permission': {
            'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
        },
        u'auth.user': {
            'Meta': {'object_name': 'User'},
            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default':   'datetime.datetime.now'}),
            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
        },
        u'contenttypes.contenttype': {
            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
        },
        u'tixeng.squidartist': {
            'Meta': {'object_name': 'SquidArtist'},
            'artist_name': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'name': ('django.db.models.fields.CharField', [], {'max_length': '20'})
        },
        u'tixeng.squidevent': {
            'Meta': {'object_name': 'SquidEvent'},
            'artist': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['tixeng.SquidArtist']", 'symmetrical': 'False'}),
            'event_date': ('django.db.models.fields.DateTimeField', [], {}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'name': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
            'venue': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tixeng.SquidVenue']"})
        },
        u'tixeng.squidtic': {
            'Meta': {'object_name': 'SquidTic'},
            'date_listed': ('django.db.models.fields.DateTimeField', [], {}),
            'event': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tixeng.SquidEvent']"}),
            'for_sale': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['accounts.MyProfile']"}),
            'price': ('django.db.models.fields.IntegerField', [], {'default': '0.0'})
        },
        u'tixeng.squidvenue': {
            'Meta': {'object_name': 'SquidVenue'},
            u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
            'name': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
            'street_address': ('django.db.models.fields.CharField', [], {'max_length': '20'})
        }
    }

    complete_apps = ['tixeng']
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-14 00:13:16

因此,最后我决定从头开始创建一个新数据库。一旦我重新正确地设置了一切,它就完全可以工作了。仍然不确定我的问题是什么,但这解决了它。

票数 0
EN

Stack Overflow用户

发布于 2013-05-08 19:08:24

我猜测一下:你在一个由south管理的应用中创建了一个新模型,但是你使用syncdb创建了它的表。现在您可以向该表添加一个字段,下面是如何修复它的方法。

添加该字段后,创建一个模式迁移。它应该使用新模型创建迁移使用模式--fake,创建新迁移它不会创建表,但它会告诉south这个迁移是done.

  • Now,添加字段,创建。正常情况下,应该创建向table.

  • Apply这个新的迁移添加字段的迁移,没有--fake.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16391272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档