﻿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
27056	changing dim property for geometries does not generate correct migration on PostgreSQL	Bill Durr	nobody	"Changing the dim property for a geometry field does not generate a migration that changes the number of dimensions a geometry in the DB has.

Changing a field in a model from {{{models.LineStringField(null=True)}}} to {{{models.LineStringField(null=True, dim=3)}}} creates the following migration and sql:

{{{
# -*- coding: utf-8 -*-
# Generated by Django 1.9.8 on 2016-08-12 15:28
from __future__ import unicode_literals

import django.contrib.gis.db.models.fields
from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('rivermap', '0026_auto_20160624_1827'),
    ]

    operations = [
        migrations.AlterField(
            model_name='sectionextra',
            name='streamPath',
            field=django.contrib.gis.db.models.fields.LineStringField(dim=3, null=True, srid=4326),
        ),
    ]
}}}
{{{
BEGIN;
--
-- Alter field streamPath on sectionextra
--
ALTER TABLE ""rivermap_sectionextra"" ALTER COLUMN ""streamPath"" TYPE geometry(LINESTRINGZ,4326) USING ""streamPath""::geometry(LINESTRINGZ,4326);

COMMIT;
}}}
This causes an exception during migration because PostGIS returned the following error
{{{
Column has Z dimension but geometry does not
}}}

According to http://gis.stackexchange.com/questions/109410/postgis-column-has-z-dimension-but-geometry-does-not the {{{ST_Force3D}}} function needs to be used for the USING clause."	Bug	closed	Migrations	dev	Normal	fixed	geodjango postgres postgis		Ready for checkin	1	0	0	0	0	0
