How do I VACUUM a SQL database

Discuss about plugins that don't have a dedicated forum
Post Reply
User avatar
Redlion
Posts: 94
Joined: Sun Jul 10, 2011 5:05 am
Location: Perth, Western Australia

How do I VACUUM a SQL database

Post by Redlion »

Hi,

I am playing with a very simple family tree program and wanted to clean up the database after all the updating.

I thought I could just use the SQL Vacuum command, but it does not work?

Here is the cut down code I am using, it is all that is needed to access the Database.

Code: Select all

function setup() ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    db = assert_userdata( sqlite3.open(Dir$.."FamilyData.sql") )
endfunction

function closedown() ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    assert_number( db:close() )
endfunction

function assert_number(f) ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if gettype(f) <> #number then debugprint("Assertion failed")
    return(f)
endfunction

function assert_userdata(f) ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if gettype(f) <> #userdata then debugprint("Assertion failed")
    return(f)
endfunction

function vacuum() ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    assert_number(db:exec("VACUUM"))
endfunction


setup()
vacuum()
closedown()
If anyone can suggest the correct syntax , that would move me on to the next challenge.

Thanks and Happy New Year to all.
----------------------------------------------------------------------------------------
Redlion
Sam460 Lite
A4000 A3000 A2000 A1200 A1000 A600 A500 CD32
sinisrus
Posts: 347
Joined: Tue Apr 21, 2015 5:43 pm

Re: How do I VACUUM a SQL database

Post by sinisrus »

Can be that ?
TRUNCATE TABLE `nom_de_la_table`
User avatar
lazi
Posts: 625
Joined: Thu Feb 24, 2011 11:08 pm

Re: How do I VACUUM a SQL database

Post by lazi »

Try this:

db:exec("Vacuum")

As there is written https://sqlite.org/lang_vacuum.html it repacks the file to make it shorter. You can only see if it done anything, if there was e.g. deleted rows in the database.
Post Reply