[postgis-users] RE : QGis 2.0 Copy/Paste from shapefile to Postgis issue if the primary key is a string

F T oukile at gmail.com
Mon Feb 3 00:40:36 PST 2014


Hi,

QGis should not deal with Postgre SQl explicit primary keys.

It is postgreSQL to manage the explicit primary key.

With Qgis 1.7.4, copy/paste with explicit primary keys where ok

If QGis 1.7.4 sends a unique primary key, PostgreSQL accept it, if the
explicit key is not unique, it reject it.

QGis 2.0 brings a regression, it put all the primary keys to null...

Denis 's workaround to add a serial to the table and a constraint
(unique not null) to the explicit primary key is not a solution for
us.

We have a lots of tables that are used not only with QGis...

Changing all the tables just because QGis 2.0  needs a non-standard
feature is a pain.

And QGis 1.7.4 was doing this copy/paste job fine.

However, this is a QGis 2.0 pb and not a postgis pb.

I will continue on the QGis List

Thanks

Fabrice



------------------------------
Hi,

QGIS prevent to overwrite the primary key field when it copies/pastes,
this is why it leaves the field empty.
One way would be to add the constraint after the copy/paste if it's for
a single shot.
Otherwise, just add a unique constraint on f1 and add a serial as
primary key.

Cheers,

Denis

On 31. 01. 14 15:02, F T wrote:
>* Hello
*>>* We have a pb with copy/paste from a shapefile to postgis if the
*>* primary key is a string.
*>* The primary key is left NULL and no commit is possible.
*>>* To reproduce the pb :
*>>* Create *table1 *with a string primary key
*>>*     CREATE TABLE table1
*>*     (
*>*       f1 character varying(10) NOT NULL,
*>*       f2 character varying(10),
*>*       geom geometry,
*>*     *CONSTRAINT t1_pkey PRIMARY KEY (f1),*
*>*     CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),
*>*     CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) =
*>*     'POINT'::text),
*>*     CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 2154)
*>*     )
*>>>* *table2* is the same as table 1 but it has no primary key
*>>*     CREATE TABLE table2
*>*     (
*>*       f1 character varying(10) NOT NULL,
*>*       f2 character varying(10),
*>*       geom geometry,
*>*       CONSTRAINT enforce_dims_geom CHECK (st_ndims(geom) = 2),
*>*       CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) =
*>*     'POINT'::text),
*>*       CONSTRAINT enforce_srid_geom CHECK (st_srid(geom) = 2154)
*>*     )
*>>>* *shapes.shp* is a shapefile that contains the points I would like to
*>* copy/paste in the Postgis tables
*>* (see attached zip file)
*>>* 1) if I copy/paste the points from shapes.shp to table1, the key field
*>* stays NULL and the commit is impossible.
*>* 2) if I copy/paste the points from shapes.shp to table2, everything is ok.
*>>* Have you ever seen this bug?
*>>* Thanks
*>>* Fabrice*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20140203/e4bb9197/attachment.html>


More information about the postgis-users mailing list