I could fix the database apparently:

$ sqlite3 ~/.cache/tracker/meta.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> DELETE FROM "nco:EmailAddress"
   ...> WHERE "nco:emailAddress" = "[email protected]";
sqlite> .q


And now it works.

My theory about the problem is that the nco:EmailAddress existed but
wasn't referenced anywhere. It should have been garbage collected. And
thus, when I want to assign this email address to an existing
nco:Contact, tracker tried to create a new nco:EmailAddress even though
it already existed.

In the SQLite database, the nco:EmailAddress table is as follows:

    CREATE TABLE "nco:EmailAddress" (
      ID INTEGER NOT NULL PRIMARY KEY,
      "nco:emailAddress" TEXT UNIQUE,
      "nco:emailAddress:graph" INTEGER);

The nco:emailAddress is set to UNIQUE. SQLite complained and Tracker
failed to complete the transaction.


It seems my database is full of these quirks, is there a way to run a
garbage collector on it?

It seems it's just a matter of running the following request on each of
the ontology tables:

    DELETE FROM "nco:EmailAddress"
    WHERE ID NOT IN (SELECT ID FROM Resource);


Can someone confirm this ?
Anyway, it worked for my email addresses.


Mildred

-- 
Mildred Ki'Lya
╭───────── mildred593@online.fr ──────────
│ Jabber, GoogleTalk: <[email protected]>
│ Website: <http://ki.lya.online.fr>           GPG ID: 9A7D 2E2B
│ Fingerprint: 197C A7E6 645B 4299 6D37 684B 6F9D A8D6 9A7D 2E2B

Attachment: 0x9A7D2E2B.asc
Description: application/pgp-keys

_______________________________________________
tracker-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to