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
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.
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.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ı
- veritabanı oluşturma
- yüklü uygulamalar için Güney ekleyin
- syncdb çalıştırın, bu veritabanı için django ve Güney tabloları ekleyin
- uygulamalarınızı ekleyin
- 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 - sonra Güney
python manage.py migrate app_name
göç bu veritabanına tabloları ekleyin çalışacaktır.
Eski bir proje kurma ve veritabanı
- yüklü uygulamalar için Güney ekleyin
- syncdb çalıştırın, bu veritabanına Güney tabloları ekleyin
- uygulamalar her
python manage.py schemamigration app_name --initial
çalıştırmak için Bu ilk göçler oluşturur - 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ı
- veritabanı oluşturmak
- yüklü uygulamalar için Güney ekleyin
- uygulamalar her
python manage.py schemamigration app_name --initial
çalıştırmak için Bu ilk göçler oluşturur - syncdb çalıştırın, bu veritabanı göçler olmayan uygulamalar katacak.
- 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.
Neden benim powershell komut dosyası ç...
Neden benim bir WordPress kullanmak: (...
Neden CSS benim donatılacak bin dağıtı...
Neden'kendini kapatma script etik...
Neden benim program tam olarak 8192 el...