2013-05-06 1 views
1

이 질문에서 사용자와 동일한 문제가 발생했지만 불행히도 answer은 아무 것도 해결하지 못했습니다. 나는 주어진 방향을 따라 할 때 무슨 일이 있었는지에 대한 몇 가지 코멘트 : 사우스 이민 후 해당 열이 없음

나는 내가 응용 프로그램에 대한 방향 및 초기화 마이그레이션 앞으로 이동 오류

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

을받은 --delete-ghost-migrations 명령을 시도합니다. 그리고 난 다음 내 모델에 변경을하고, 변화를위한 새로운 마이그레이션을 만들려고 다시

/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) 

--delete-ghost-migrations을 시도했다.

^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 

및 마이그레이션을 적용합니다.

/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)

만든 마이그레이션 :

# -*- 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'] 
+0

가짜 마이그레이션을 수행 했습니까? – jpic

+0

고스트 마이그레이션을 삭제 한 후 수행 했음 – apardes

+0

문제가 무엇인지 파악할 수 없으며 솔루션을 찾은 동안 전혀 검색하지 않고 아무도 실제로 문제를 해결하지 못합니다. – apardes

답변

0

그래서 결국 나는 새로운 데이터베이스로 처음부터 시작하기로 결정했습니다. 일단 모든 것을 다시 올바르게 설정하면 완전히 기능적이었습니다. 아직 내 문제는 무엇인지는 모르지만 해결되었습니다.

0

내가 추측 할게요 : 새 모델을 만들었을 에서 관리하는 응용 프로그램에서,하지만 당신은 syncdb를 사용하여 테이블을 만들었습니다. 이제이 테이블에 필드를 추가 할 수 있으며이를 수정하는 방법입니다.

  1. 당신은 필드를 추가하기 전에 스키마 마이그레이션을 만들 수 있습니다. 새 모델 테이블로 마이그레이션을 작성해야합니다.

  2. --fake으로이 새로운 마이그레이션을 적용하면 테이블을 만들지 않지만이 마이그레이션이 완료되었다고 남쪽으로 알려줍니다.

  3. 필드를 추가하고 스키마 마이그레이션을 만듭니다. 테이블에 필드를 추가하는 마이그레이션을 작성해야합니다.

  4. 정상적으로, 아니 --fake이 적용됩니다.

+0

'DatabaseError : table "_south_new_tixeng_squidtic"already exists "는 4 단계를 시도하고 적용했을 때 얻은 것입니다. 모든 것이 그 시점까지는 문제없이 진행되었습니다. – apardes

+0

재밌 네요. 3 단계에서 만든 이전 스크립트를 붙여 넣을 수 있습니까? – jpic

+0

이전으로 업데이트되었습니다. – apardes