[Qgis-developer] Connect to Spatialite db from Pyqgis causes OperationalError: no such functions geometry constraints

a.furieri at lqt.it a.furieri at lqt.it
Wed Mar 31 18:05:31 EDT 2010

On Wed, 31 Mar 2010 15:43:12 -0430, Marcelo Reyes wrote
> ...  when I try to UPDATE or INSERT anything I get the folowing error:
> OperationalError: no such functions geometry constraints

Hi Marcelo,

the 'GeometryConstraints function not found' issue you are
experiencing can be very easily explained:

a) you've opened your DB using a recent SpatiaLite's version
    [presumably v.2.4.0-RC, if you're using QGIS 1.4]: in this
    case SpatiaLite silently converts any DB trigger to the
    most recent (and efficient) style.
b) then you are trying to load some obsolete DLL version in
    Python. but you cannot expect obsolete sw to be able 
    to support the most recent triggers.
c) the most recent DLL is named 'libspatialite-2.dll', so you
    are obviously using some obsolete DLL

please, update your DLLs to v.2.4.0-RC:

> I'm guessing this is because the libspatialite extension is not loaded, 
> but when I try to load it using query.exec_("SELECT load_extension('libspatialite-1.dll')") nothing happens.

this point is not at all clear to me: what do you intend when 
you state "nothing happens" ?
there are lots of reasons accounting for a failure [bad DLL's path, 
SQLite isn't enabled to load dynamic extensions, unresolved symbols ...] 
but for sure you'll get some error in this case.

Anyway, there is a "bomb proof" test you can perform to check
if the DLL was actually loaded or not:

SELECT spatialite_version();

if you get back a text string like "2.4.0" it's ok, you can safely
assume the DLL has been succesfully loaded.
otherwise you'll get some error like "no such function spatialite_version"


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20100401/423321ff/attachment.html

More information about the Qgis-developer mailing list