Problemet är direkt relaterat till Akonadi fel nr. 283682, som har varit en nagel i ögat för KMail sedan oktober, 2011. Det finns ett problem med timing och koordinering för asynkron behandling av brevfilter. Då och då, gör det att en filterregel som flyttar brev till en annan korg "hickar till", och producerar mer än en databaspost för ett brev som har flyttats. När du försöker öppna den andra kopian av ett sådant brev, visas felmeddelandet "Kunde inte hämta objekt från gränssnitt ... [LRCONFLICT]". Sådana spökbrev kan inte tas bort eller flyttas till papperskorgen med KMails inbyggda funktioner. Men du kan bli av med dem. Så här gör du det.
Avsluta först programmet KMail. Det kanske inte är nödvändigt, men ta det säkra före det osäkra.
Du kan ta reda på hur många skadade brev som finns genom att använda
akonadictl.~ $ akonadictl fsck 2 >&1 | grep ^Found Found 6 external files. Found 6 external parts. Found no unreferenced external files. Found 0 parts to be moved to external files Found 0 parts to be moved to database Found 6 collections without RID. Found 9 items without RID. Found 0 dirty items.
In this instance, there are nine duplicated messages (without RID).
Du måste veta hur man ansluter direkt till mysql-servern. Använd kommandona
psochgrepför att ta reda på det.~ $ ps ux | grep mysql david 8788 0.2 0.9 3736292 153936 ? Sl 06:45 0:16 /usr/sbin/mysqld --defaults-file=/home/david/.local/share/akonadi/mysql.conf --datadir=/home/david/.local/share/akonadi/db_data/ --socket=/run/user/1000/akonadi/mysql.socket --pid-file=/run/user/1000/akonadi/mysql.pid david 24275 0.0 0.0 8056 2144 pts/1 S+ 08:24 0:00 grep --colour=auto mysql
Anropa mysql-serverprogrammet genom att använda uttagsinformationen från steg 3 och utför tre mysql-kommandon, som illustreras nedan.
~ $ mysql --socket=/run/user/1000/akonadi/mysql.socket <== Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 114 Server version: 10.5.10-MariaDB Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> use akonadi; <== Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [akonadi]> delete from pimitemtable where remoteid is NULL; <== Query OK, 9 rows affected (0.003 sec) MariaDB [akonadi]> \q <== Bye
De tre mysql-kommandon är "use akonadi;", "delete from pimitemtable where remoteid is NULL;" och "\q". Efter du har skrivit "mysql --socket= ..." är du i dialog med mysql-servern (som också kallas "MariaDB"), som har prompten >. Hela dialogen presenteras här för att vara tydlig. Rader som användaren skrivit in är markerade med <== i exemplet ovan.
När KMail startas om är de irriterande duplicerade breven borta. De var enbart spöken skapade av NULL-pekare i mysql-databasens tabeller.