2016-01-08 19 views
7

django 1.9'u kullanma. Bu yüzden veritabanımı taşımaya çalışıyorum ancak bu hatayla karşılaşıyorum. Bu sorunu gidermek için birçok saat harcadım ve hiç başarı elde edemedim. Gerekirse kodumdan daha fazlasını yükleyebilirim. İşte hata:Django FieldDoesNotExist istisna geçirirken

C:\Users\James\Desktop\James\Work\django\homepgcom>python manage.py migrate 
Operations to perform: 
    Apply all migrations: auth, interface, sessions, admin, contenttypes, userprofile 
Running migrations: 
    Rendering model states... DONE 
    Applying interface.0002_auto_20160107_1635...Traceback (most recent call last): 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\django\db\models\options.py", line 580, in get_field 
return self.fields_map[field_name] 
KeyError: None 
During handling of the above exception, another exception occurred: 
Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\django\core\management\__init__.py", line 350, in execute_from_command_line 
utility.execute() 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\core\management\__init__.py", line 342, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\core\management\base.py", line 348, in run_from_argv 
self.execute(*args, **cmd_options) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\core\management\base.py", line 399, in execute 
output = self.handle(*args, **options) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\core\management\commands\migrate.py", line 200, in handle 
executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\migrations\executor.py", line 92, in migrate 
self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\migrations\executor.py", line 121, in _migrate_all_forwards 
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\migrations\executor.py", line 198, in apply_migration 
state = migration.apply(state, schema_editor) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\migrations\migration.py", line 123, in apply 
operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\migrations\operations\fields.py", line 201, in database_forwards 
schema_editor.alter_field(from_model, from_field, to_field) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\backends\base\schema.py", line 482, in alter_field 
old_db_params, new_db_params, strict) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\backends\sqlite3\schema.py", line 245, in _alter_field 
self._remake_table(model, alter_fields=[(old_field, new_field)]) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\backends\sqlite3\schema.py", line 181, in _remake_table 
self.create_model(temp_model) 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\backends\base\schema.py", line 250, in create_model 
to_column = field.remote_field.model._meta.get_field(field.remote_field.field_name).column 
File "C:\Users\James\AppData\Local\Programs\Python\Python35\lib\site-packages\ 
django\db\models\options.py", line 582, in get_field 
raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, field_name)) 
django.core.exceptions.FieldDoesNotExist: User has no field named None 

Çok teşekkürler şimdiden!

+0

Kaç tane uygulamanız var?Ve burada istisna 'FieldDoesNotExist: Kullanıcı Yok adlı bir alana sahip değildir, 'Bunu değiştirirseniz' Kullanıcı 'modelini yazabilir misiniz. Veya 'Kullanıcı' –

+0

ile çalıştığınız herhangi bir kod Yorum için teşekkürler, ama bir çözüm var! – ThankYOU

+0

sizin için sevindim :) –

cevap

2

Yaklaşık beş dakika bunu bildirdikten sonra bir sorunla karşılaştım. Gelecekte bu meselenin olması durumunda onu paylaşacağımı düşündüm.

  1. Sonra göç tüm uygulamalar
  2. için tüm uygulamalar için
  3. Çalıştır Tüm taşıma işlemlerini sil python manage.py migrate

Sonra her şey

için tam bir aptal gibi hissediyorum sadece iyi olmalı Bunu düzeltmeye çalışırken çok zaman harcadık, ah iyi! Django'ya yeni Herkes

+4

mmm sizin için işe yarayabilir, ancak projeniz için tüm geçişleri silemezsiniz. – BlaShadow

+1

Çok kötü bir çözüm! Geçiş komut dosyaları zaten prod ise, bu kötü olacaktır veya daha fazla değişiklik yapılmasına yol açacaktır. – DhiaTN

+1

Django’da yenisin. Veritabanınızda "django_migrations" adı verilen ve veritabanınızda yürütülen geçişleri takip eden bir tablo var. Django, hangi göçlerin yeni olduğunu ve idam edilmesi gerektiğini bilir. Göçünüzü kaldırır ve yenilerini oluşturursanız, yerel makinenizde bir sorun olmayabilir, çünkü veritabanınızı kolayca temizleyebilir ve yeni bir tane oluşturabilirsiniz. Ancak canlı bir db ile çalışan bir sunucunuz varsa, temelde kötü bir uygulama olan django_migration tablosunu da onarmanız gerekir. Bu kadar uzun bir hikaye kısa, geçişleri temizlemek yerine bir düzeltme bulun. – AliBZ

1

, O göç insanların Kayıplarına env.cause bir ekip sorunu kablolu bulmak modellerini değiştirmek ve göçler Birisi yanlış yaptım yapmak ve onu dev öyle problem.If neden kolaydır env, geçişleri sil ve ilk adımı tekrar etme bir sorun değil.

Ancak üretimde bulunuyorsa, tüm geçişleri silemezsiniz. Bunu yaparsanız, yeni db'nin kökeni olanların verilerinin olduğundan emin olmanız gerekir. Bu, buggy geçişlerini düzeltmekten çok zaman alır. . Hata alanı bulmak, gerçekleşmişse

python manage.py migrate

çalıştırmak veya tablolar soruna neden olduğunda

Yani göçler dosya kılavuzu kontrol edilir sorunu gidermek için doğru bir yol sanırım, o zaman yanlış göç değiştirmek dosya.

bir

django.db.utils.OperationalError: (1050, "Table 'sometable' already exists

Django Table already exist sorununuzu orada çözecektir edin. Bir

django.core.exceptions.FieldDoesNotExist: User has no field named None

varsa

Eğer migrats.AddField veya AlterFields silmek zorunda acımasız.

operations = [ 
    migrations.AddField(
     model_name='user', 
     name='user_current_plan_id', 
     field=models.IntegerField(blank=True, null=True), 
    ), 
] 

hata oluştu kez

Duplicate column name

sen, benim için Duplicate column name

tarafından tamir edebiliriz varsa, sorun değil ama sakin questions..just bir dizi ve yanlış geçişleri dosyaları değiştirerek düzeltmek, tüm geçişleri silmek ve db verilerini yeniden senkronize etmekten daha iyi bir yoldur.