On 14 August 2015 at 11:51, Damian, Alexandru <[email protected]> wrote:
> One of intended effects of this migration is to make sure that we have a > Project with id "0" and release None after this migration is run. > > After this patch is merged, there is no guarantee that this entry in the > database will exist, unless I'm missing something. > > Can you please add code to the migration to automatically add the Project > id 0 entry if it does not exist ? > I will do that. Apologies, it wasn't clear from the migration that this is the intended behaviour. Is it a side effect of altering a field so that its default value is 0? (NB this causes an error on MySQL.) Also, should the data migration be separated from the schema migration? Would I need to add a new 0022 migration and bump the others forward if that is the case? > Also, can you please check what is going on with the white space changes ? > I'll put it back to its previous state. Elliot > Cheers, > Alex > > On Fri, Aug 14, 2015 at 11:39 AM, Elliot Smith <[email protected]> > wrote: > >> Two issues prevent this migration from working correctly >> with a MySQL back-end: >> >> 1. MySQL won't allow a default value to be set for an >> AutoField, which is what the migration tries to do >> for project_id ("ValueError: The database backend does not accept >> 0 as a value for AutoField.") >> >> 2. When migrations are applied to a MySQL back-end, Django >> (via South) attempts a dry run of the migration first: it >> applies the forward migration then rolls it back. However, this >> migration raises an exception on roll back, which causes the >> whole series of migrations to fail. >> >> This patch fixes both issues. >> >> Fixes https://bugzilla.yoctoproject.org/show_bug.cgi?id=7932 >> >> Signed-off-by: Elliot Smith <[email protected]> >> --- >> ...d_build_project__chg_field_project_bitbake_version__chg_.py | 10 >> ++++++---- >> 1 file changed, 6 insertions(+), 4 deletions(-) >> >> diff --git >> a/bitbake/lib/toaster/orm/migrations/0021_auto__chg_field_build_project__chg_field_project_bitbake_version__chg_.py >> b/bitbake/lib/toaster/orm/migrations/0021_auto__chg_field_build_project__chg_field_project_bitbake_version__chg_.py >> index 924a5c4..c4e459b 100644 >> --- >> a/bitbake/lib/toaster/orm/migrations/0021_auto__chg_field_build_project__chg_field_project_bitbake_version__chg_.py >> +++ >> b/bitbake/lib/toaster/orm/migrations/0021_auto__chg_field_build_project__chg_field_project_bitbake_version__chg_.py >> @@ -7,10 +7,12 @@ from django.db import models >> >> class Migration(SchemaMigration): >> >> + no_dry_run = True >> + >> def forwards(self, orm): >> >> # Changing field 'Build.project' >> - db.alter_column(u'orm_build', 'project_id', >> self.gf('django.db.models.fields.related.ForeignKey')(default=0, >> to=orm['orm.Project'])) >> + db.alter_column(u'orm_build', 'project_id', self.gf >> ('django.db.models.fields.related.ForeignKey')(to=orm['orm.Project'])) >> >> # Changing field 'Project.bitbake_version' >> db.alter_column(u'orm_project', 'bitbake_version_id', >> self.gf('django.db.models.fields.related.ForeignKey')(to=orm['orm.BitbakeVersion'], >> null=True)) >> @@ -31,14 +33,14 @@ class Migration(SchemaMigration): >> >> # User chose to not deal with backwards NULL issues for >> 'Project.bitbake_version' >> raise RuntimeError("Cannot reverse this migration. >> 'Project.bitbake_version' and its values cannot be restored.") >> - >> + >> # The following code is provided here to aid in writing a >> correct migration >> # Changing field 'Project.bitbake_version' >> db.alter_column(u'orm_project', 'bitbake_version_id', self.gf >> ('django.db.models.fields.related.ForeignKey')(to=orm['orm.BitbakeVersion'])) >> >> # User chose to not deal with backwards NULL issues for >> 'Project.release' >> raise RuntimeError("Cannot reverse this migration. >> 'Project.release' and its values cannot be restored.") >> - >> + >> # The following code is provided here to aid in writing a >> correct migration >> # Changing field 'Project.release' >> db.alter_column(u'orm_project', 'release_id', self.gf >> ('django.db.models.fields.related.ForeignKey')(to=orm['orm.Release'])) >> @@ -366,4 +368,4 @@ class Migration(SchemaMigration): >> } >> } >> >> - complete_apps = ['orm'] >> \ No newline at end of file >> + complete_apps = ['orm'] >> -- >> Elliot Smith >> Software Engineer >> Intel OTC >> >> --------------------------------------------------------------------- >> Intel Corporation (UK) Limited >> Registered No. 1134945 (England) >> Registered Office: Pipers Way, Swindon SN3 1RJ >> VAT No: 860 2173 47 >> >> This e-mail and any attachments may contain confidential material for >> the sole use of the intended recipient(s). Any review or distribution >> by others is strictly prohibited. If you are not the intended >> recipient, please contact the sender and delete all copies. >> >> -- >> _______________________________________________ >> toaster mailing list >> [email protected] >> https://lists.yoctoproject.org/listinfo/toaster >> > > > > -- > Alex Damian > Yocto Project > SSG / OTC > > --------------------------------------------------------------------- > Intel Corporation (UK) Limited > Registered No. 1134945 (England) > Registered Office: Pipers Way, Swindon SN3 1RJ > VAT No: 860 2173 47 > > This e-mail and any attachments may contain confidential material for > the sole use of the intended recipient(s). Any review or distribution > by others is strictly prohibited. If you are not the intended > recipient, please contact the sender and delete all copies. > -- Elliot Smith Software Engineer Intel Open Source Technology Centre
-- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
