'daki bir tablonun yeniden adlandırılması için otomatik olarak oluşturulmuş bir geçişi geri alırken hata oluştu geri döndürme, bir tablonun yeniden adlandırılmasını içeren bir Django (1.8.7) geçişi ile ilgili sorun yaşıyorum. Postgres'de yeniden adlandırmak mümkün görünmesine rağmen, eski tablo adını kullanarak bir kısıtlama eklemeyi dener. İşte Django
traceback var:cursor.execute(sql, params)
File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 79, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/utils.py", line 97, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/utils/six.py", line 658, in reraise
raise value.with_traceback(tb)
File "/Users/myworkspace/projects/xxx/venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "team_membershiprole" does not exist
onun ürettiği SQL bir göz atacak olursak,
[...]
ALTER TABLE "team_membershiprole" RENAME TO "team_leadershiprole";
[...]
ALTER TABLE "team_leadershipteammember"
ADD CONSTRAINT "team_l_role_id_xxx"
FOREIGN KEY ("role_id") REFERENCES "team_membershiprole" ("id")
DEFERRABLE INITIALLY DEFERRED;
[...]
COMMIT;
O tablo yapmasa da, team_membershiprole
bir gönderme var olduğunu görebilirsiniz artık var (yeniden adlandırıldı).
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('core', '0023_xxx'),
('team', '0009_xxx2'),
]
operations = [
migrations.CreateModel(
name='TeamMembership',
fields=[
('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)),
('team', models.ForeignKey(related_name='members', to='team.Team')),
('member', models.ForeignKey(to='core.Member')),
],
),
migrations.RenameModel(
old_name='LeadershipRole',
new_name='MembershipRole',
),
migrations.RemoveField(
model_name='leadershipteammember',
name='team',
),
migrations.RemoveField(
model_name='leadershipteammember',
name='member',
),
migrations.RemoveField(
model_name='leadershipteammember',
name='role',
),
migrations.DeleteModel(
name='LeadershipTeamMember',
),
migrations.AddField(
model_name='teammembership',
name='role',
field=models.ForeignKey(to='team.MembershipRole'),
),
]
bunu anlıyorum Django göçler hata olabilir, ama bunun geçici bir çözüm için herhangi bir yol yoktur: Burada göç kodu?
1.9'da çalışıp çalışmadığını kontrol edip edemiyorsanız, https://code.djangoproject.com/newticket adresinden bir bilet oluşturun? Bu ayrıca kök nedenini belirlemeye ve bir geçici çözüm geliştirmeye yardımcı olmalıdır. – knbk
Bunu deneyeceğim ve sonuçları ile tekrar yorumlayacağım. –