SORU
29 Ocak 2011, CUMARTESİ


Neden'Güney benim göçler t çalışmıyor?

İlk olarak, benim veritabanı oluşturmak.

create database mydb;

"Uygulamalar yüklü. "Güney ekliyorum Sonra, bu yazının gidiyorum: http://south.aeracode.org/docs/tutorial/part1.html

Öğretici bana bunu söyler:

$ py manage.py  schemamigration wall --initial
>>> Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate wall

Harika, şimdi ben geçirilir.

$ py manage.py migrate wall

Ama bana bu hatayı veriyor...

django.db.utils.DatabaseError: (1146, "Table 'fable.south_migrationhistory' doesn't exist")

Google kullanıyorum o yüzden hiç çalışan (. dolayısıyla 870 sorularıma Stackoverflow istedi ve bu bir sayfa olsun: http://groups.google.com/group/south-users/browse_thread/thread/d4c83f821dd2ca1c

Tamam, bu talimatları takip ettim

>> Drop database mydb;
>> Create database mydb;
$ rm -rf ./wall/migrations
$ py manage.py syncdb

Ama syncdb çalıştırdığımda, Django tablolar bir grup oluşturur. South_migrationhistory tablo oluşturur, ama . evet ^strong>ayrıca benim app tablolar oluşturur.

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.sites
 > django.contrib.messages
 > south
 > fable.notification
 > pagination
 > timezones
 > fable.wall
 > mediasync
 > staticfiles
 > debug_toolbar

Not synced (use migrations):
 - 
(use ./manage.py migrate to migrate these)

...Cool.şimdi bana bu göç söyler. Yani, bu yaptığım:

$ py manage.py  migrate wall
The app 'wall' does not appear to use migrations.

Tamam, çok güzel. İlk göçler duvar ekleyeceğim.

$ py manage.py schemamigration wall --initial

Ben geçirdikten sonra:

$ py manage.py migrate wall

Ne biliyor musun? Bana bu BS verir:

_mysql_exceptions.OperationalError: (1050, "Table 'wall_content' already exists")

Özür dilerim, bu beni gerçekten kızdırıyor. Biri yardım edebilir mi ? teşekkürler.

Nasıl bir iş ve düzgün her şeyi ile senkronize etmek için Güney alabilirim? Aklıma gelen tek şey İNSTALLED_APPS, sonra syncdb Çalıştır uygulamasını kaldırın tekrar ekleyin.

Bu ÇOK APTALCA.

CEVAP
29 Ocak 2011, CUMARTESİ


Güney oluşturmanıza olanak sağlar göçler ilk olarak ne zaman başlar ile yeni bir uygulama ve tablolar olmadı eklenmiştir veritabanı henüz, oluşturma, taşıma için eski uygulamalar zaten var tablolarda veritabanı. Anahtarı ne zaman yapacağını bilmektir.

İlk hataydı ne zaman silinmiş göçler, en kısa sürede yaptın, ve sonra kaçtı syncdb, Django bilmiyordum istedin Güney yönetmek için bu uygulamayı artık, oluşturulan tablolar için. İlk göçler oluşturduğunuz ve sonra göç koştu, Güney oluşturulmuş django tablolar ve hata böylece yaratmaya çalışıyordu.

Bu noktada iki seçeneğiniz vardır.

  1. Veritabanınızdan duvar uygulaması için tabloları Sil ve Bu geçiş çalıştırın ve tablolar oluşturur $ py manage.py migrate wall çalıştırın.

  2. Sahte ilk geçiş tükendi $ py manage.py migrate wall 0001 --fake Bunu söyleyecek Güney zaten var olan tablo üzerinde veritabanı sadece sahte olan bir satır eklemek için south_migrationhistory tablo, böylece bir dahaki sefere bir çalışma geçireceği tanıdığım ilk geçiş zaten çalıştırın.

Yepyeni bir proje kurma ve veritabanı

  1. veritabanı oluşturma
  2. yüklü uygulamalar için Güney ekleyin
  3. syncdb çalıştırın, bu veritabanı için django ve Güney tabloları ekleyin
  4. uygulamalarınızı ekleyin
  5. her bir uygulama çalıştırmak için python manage.py schemamigration app_name --initial Bu uygulama için ilk geçiş dosyaları oluşturur
  6. sonra Güney python manage.py migrate app_name göç bu veritabanına tabloları ekleyin çalışacaktır.

Eski bir proje kurma ve veritabanı

  1. yüklü uygulamalar için Güney ekleyin
  2. syncdb çalıştırın, bu veritabanına Güney tabloları ekleyin
  3. uygulamalar her python manage.py schemamigration app_name --initial çalıştırmak için Bu ilk göçler oluşturur
  4. her uygulamalarınızı çalıştırmak python manage.py migrate app_name 0001 --fake , bu sahte Güney, işe yaramaz bir şey için veritabanı için bu modeller, sadece kayıt eklemek için south_migrationhistory tablo, böylece bir dahaki sefere istediğiniz oluşturmak için bir geçiş, tüm set.

Eski bir proje kurma ve veritabanı

  1. veritabanı oluşturmak
  2. yüklü uygulamalar için Güney ekleyin
  3. uygulamalar her python manage.py schemamigration app_name --initial çalıştırmak için Bu ilk göçler oluşturur
  4. syncdb çalıştırın, bu veritabanı göçler olmayan uygulamalar katacak.
  5. sonra Güney python manage.py migrate göç bu uygulamalar için tüm göçler çalışacak çalıştırın.

Güney ile Kur, Güney bu uygulamalar için model değişiklikleri yönetmek için kullanmaya başlayabilirsiniz. En yaygın çalıştırmak için komut koştu ve değişiklikleri bulmak ve bir geçiş dosyası inşa edecek son göç bakacak python manage.py schemamigration app_name migration_name --auto. O zaman sadece python manage.py migrate çalıştırmak için gereken ve sizin için veritabanı alter.

Bu yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009