﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31665	Auto-migrations fail on postgres when Charfield's default value is longer than old constraint	shadytradesman	nobody	"
Migration to create the field

{{{ 
# Generated by Django 2.2.12 on 2020-05-29 19:06

import cells.models
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('cells', '0003_auto_20200529_1832'),
    ]

    operations = [
        migrations.AddField(
            model_name='cell',
            name='invite_link_secret_key',
            field=models.CharField(default=cells.models.random_string, max_length=7),
        ),
    ]
}}}

Migration to resize the field:
{{{
# Generated by Django 2.2.12 on 2020-05-29 23:56

import cells.models
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('cells', '0004_auto_20200529_2006'),
    ]

    operations = [
        migrations.AlterField(
            model_name='cell',
            name='invite_link_secret_key',
            field=models.CharField(default=cells.models.random_string, max_length=64),
        ),
    ]

}}}

Here is the random string method: 
{{{
def random_string():
    return hashlib.sha224(bytes(random.randint(1, 99999999))).hexdigest()
}}}


This migration worked on mysql when I was developing locally, but it was because I updated the random_string() function to provide a string that was longer after I ran the migration. It failed when I ran it against my prod Postgres 9.5.15 database.

I suggest including default_value functions in the migrations so that when old migrations are run against new code, you don't have issues. 
"	Bug	new	Migrations	2.2	Normal		charfield resize default alterfield max_length		Unreviewed	0	0	0	0	0	0
