I have the following table and sequence in my postgresql-8.4 database:
CREATE TABLE complexobjectpy
(
id integer NOT NULL,
the_geom geometry,
semcat integer,
CONSTRAINT complexobjectpy_pkey PRIMARY KEY (id),
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 900913)
)
WITH (
OIDS=FALSE
);
ALTER TABLE complexobjectpy OWNER TO tss;
CREATE SEQUENCE seq_complexobjectpy
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
ALTER TABLE seq_complexobjectpy OWNER TO tss;
The following is instead my Django model:
class Complexobjectpy(models.Model):
the_geom = models.GeometryField(srid=900913)
semcat = models.IntegerField()
objects = models.GeoManager()
class Meta:
db_table = u'complexobjectpy'
Performing the following query:
myObj = Complexobjectpy(semcat=50, the_geom=geometryMerged.wkt)
myObj.save(using='u1')
I get the error:
IntegrityError: null value in column "id" violates not-null constraint
Why I get this? Reading the documentation I was expecting that the id value would be chosen automatically using the sequence...
Actually I am providing this as an answer. The datatype serial in postgres is an auto incremental four-byte integer. If you change your id from integer to serial this would work.
id serial NOT NULL
Read more: http://www.postgresql.org/docs/8.4/static/datatype.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.