[GRASSLIST:3625] Re: Disconnecting db in 5.7

Craig Aumann caumann at ualberta.ca
Tue Jun 8 10:26:59 EDT 2004


Thanks, Radim!  This clears things up for me. 

And yes, the output below should have been "l1ashpcut" and not my
work-around "l1ashp2cut".  

Cheers!
Craig

On Tue, 2004-06-08 at 06:40, Radim Blazek wrote:
> On Monday 07 June 2004 22:50, Craig Aumann wrote:
> > A few days ago, I ran an overlay command and then linked the output up
> > to an attribute table:
> >
> > v.overlay ainput=l1ashp atype=area binput=curregion  btype=area
> > output=l1ashp2cut operator=and
> 
> It was output=l1ashpcut, I presume?
> 
> > v.db.connect -o map=l1ashpcut table=l1aatt key=LINK_KEY \
> >     driver=pg database="dbname=jogis,user=caumann"
> >
> >
> > Today, I tried to re-run things and got the following error:
> >
> > GRASS 5.7.-cvs:~/grass57/netdown/jogis/caumann/vector > v.overlay
> > ainput=l1ashp atype=area binput=curregion  btype=area output=l1ashpcut \
> >
> > >     operator=and
> >
> > ---------------------------------------------------------------------------
> >-- Writing attributes ...
> > DBMI-DBF driver error:
> > Table l1ashpcut already exists
> > Error in db_execute_immediate()
> >
> > ERROR: Cannot create table: create table l1ashpcut (cat integer, cata
> >        integer, catb integer)
> >
> > --------------
> >
> > No matter what I do, I can't make this error go away.  I suspect I
> > should have done something to disconnect the db before I re-ran this.
> >
> > What am I not understanding/not doing right?
> 
> v.db.connect must be used with attention and understanding what it does.
> In general it creates/deletes links to tables, but doe not create/drop/copy
> the table.
> 
> v.overlay created a new table 'l1ashpcut' linked to field 1,
> then you relinked the field 1 (v.db.connect -o map=l1ashpcut table=l1aatt),
> to the table 'l1aatt', the table 'l1ashpcut' however remains in the database.
> When you run 'v.overlay output=l1ashpcut' second time, it first deletes 
> old existing vector 'l1ashpcut' and all its tables (in this case only
> the table 'l1aatt', which you linked by v.db.connect).
> The table 'l1ashpcut' was not deleted because the link to this table 
> was overwritten by 'v.db.connect -o' so the vector 'l1ashpcut' knows 
> nothing about that table.
> 
> You have to run something like 
> echo 'drop table l1ashpcut' | db.execute 
> for example, to delete the table.
> 
> Radim
> 
> 
> 
>  




More information about the grass-user mailing list