Created attachment 109818 [details] screendump error After migrating digikam from 5.7.0 to 5.8.0 I got an error directly after starting 5.8.0. The problem is that the migration of the databasescheme from version 8 to 9 has failed. See screendump in the attachement. Digikam 5.8.0 doesn't start.
Please install DebugView program from Microsoft and run it while digiKam starting. https://docs.microsoft.com/en-us/sysinternals/downloads/debugview You will see all debug traces generated internally by digiKam. This will be interesting to investigate. Gilles Caulier
Do you use MySQL or MariaDB? An internal or external MySQL server? Maik
(In reply to Maik Qualmann from comment #2) > Do you use MySQL or MariaDB? An internal or external MySQL server? > > Maik mySQL intern - MariaDB vs 10.2 Roeland
(In reply to caulier.gilles from comment #1) > Please install DebugView program from Microsoft and run it while digiKam > starting. > > https://docs.microsoft.com/en-us/sysinternals/downloads/debugview > > You will see all debug traces generated internally by digiKam. This will be > interesting to investigate. > > Gilles Caulier The logfile during migrating 5.7.0 to 5.8.0: 00000001 0.00000000 [6072] InitSideBySide failed create an activation context. Error: 1814 00000002 11.33147907 [10604] digikam.widgets: Breeze icons ressource file found 00000003 11.33652115 [10604] digikam.general: AlbumWatch use QFileSystemWatcher 00000004 11.36268330 [10604] digikam.general: Database Parameters: 00000005 11.36268330 [10604] Type: "QMYSQL" 00000006 11.36268330 [10604] DB Core Name: "digikam" 00000007 11.36268330 [10604] DB Thumbs Name: "digikam" 00000008 11.36268330 [10604] DB Face Name: "digikam" 00000009 11.36268330 [10604] Connect Options: "" 00000010 11.36268330 [10604] Host Name: "localhost" 00000011 11.36268330 [10604] Host port: 3307 00000012 11.36268330 [10604] Internal Server: true 00000013 11.36268330 [10604] Internal Server Path: "C:/Users/mlrvt/digikam" 00000014 11.36268330 [10604] Internal Server Serv Cmd: "C:/Program Files/MariaDB 10.2/bin//mysqld.exe" 00000015 11.36268330 [10604] Internal Server Init Cmd: "C:/Program Files/MariaDB 10.2/bin//mysql_install_db.exe" 00000016 11.36268330 [10604] Username: "root" 00000017 11.36268330 [10604] Password: "" 00000018 11.36268330 [10604] 00000019 11.36393261 [10604] digikam.databaseserver: Database Parameters: 00000020 11.36393261 [10604] Type: "QMYSQL" 00000021 11.36393261 [10604] DB Core Name: "digikam" 00000022 11.36393261 [10604] DB Thumbs Name: "digikam" 00000023 11.36393261 [10604] DB Face Name: "digikam" 00000024 11.36393261 [10604] Connect Options: "" 00000025 11.36393261 [10604] Host Name: "localhost" 00000026 11.36393261 [10604] Host port: 3307 00000027 11.36393261 [10604] Internal Server: true 00000028 11.36393261 [10604] Internal Server Path: "C:/Users/mlrvt/digikam" 00000029 11.36393261 [10604] Internal Server Serv Cmd: "C:/Program Files/MariaDB 10.2/bin//mysqld.exe" 00000030 11.36393261 [10604] Internal Server Init Cmd: "C:/Program Files/MariaDB 10.2/bin//mysql_install_db.exe" 00000031 11.36393261 [10604] Username: "root" 00000032 11.36393261 [10604] Password: "" 00000033 11.36393261 [10604] 00000034 11.36401176 [10604] digikam.databaseserver: Internal Server data path: "C:/Users/mlrvt/digikam/.mysql.digikam/db_data" 00000035 11.36451340 [10604] digikam.databaseserver: The mysql configuration was already up-to-date: "C:/Users/mlrvt/AppData/Local/digikam/mysql.conf" 00000036 11.36466312 [10604] digikam.databaseserver: Failed to open MySQL error log. 00000037 11.77182961 [10604] digikam.databaseserver: Database server: "C:/Program Files/MariaDB 10.2/bin//mysqld.exe" ("--defaults-file=C:\\Users\\mlrvt\\AppData\\Local\\digikam\\mysql.conf", "--datadir=C:\\Users\\mlrvt\\digikam\\.mysql.digikam\\db_data", "--skip-networking=0", "--port=3307") 00000038 11.78020382 [10604] digikam.databaseserver: Internal database server started 00000039 11.78075218 [10604] digikam.databaseserver: Running 0 seconds... 00000040 12.11741829 [10604] digikam.dbengine: Loading SQL code from config file "C:/Program Files/digiKam/data/digikam/database/dbconfig.xml" 00000041 12.12179470 [10604] digikam.dbengine: Checking XML version ID => expected: 3 found: 3 00000042 12.12433529 [10604] digikam.coredb: Core database: running schema update 00000043 12.21508312 [10604] digikam.coredb: Core database: have a structure version 8 00000044 12.21511459 [10604] digikam.coredb: Core database: makeUpdates 8 to 9 00000045 26.46192360 [10604] digikam.dbengine: Failure executing query: 00000046 26.46192360 [10604] "" 00000047 26.46192360 [10604] Error messages: "QMYSQL: Unable to execute query" "Can't create table `digikam`.`#sql-28dc_50` (errno: 121 \"Duplicate key on write or update\")" 1005 2 00000048 26.46192360 [10604] Bound values: () 00000049 26.46204376 [10604] digikam.dbengine: Error while executing DBAction [ "UpdateSchemaFromV7ToV9" ] Statement [ "ALTER IGNORE TABLE Albums\n ADD CONSTRAINT Albums_AlbumRoots FOREIGN KEY (albumRoot) REFERENCES AlbumRoots (id) ON DELETE CASCADE ON UPDATE CASCADE,\n ADD UNIQUE (albumRoot, relativePath(255)),\n ENGINE InnoDB;" ] 00000050 26.46210861 [10604] digikam.coredb: Core database: schema update to V 9 failed! 00000051 26.46483231 [10604] digikam.coredb: Core database: cannot process schema initialization 00000052 40.35442734 [10604] KMemoryInfo: Platform identified : "WINDOWS" 00000053 40.35445404 [10604] KMemoryInfo: TotalRam: 12713754624 00000054 40.35453415 [10604] digikam.general: Allowing a cache size of 200 MB 00000055 40.36982346 [10604] QThreadStorage: Thread 0x230dbaf0 exited after QThreadStorage 7 destroyed 00000056 40.37002563 [10604] QWaitCondition: Destroyed while threads are still waiting 00000057 40.37097931 [10604] QThread: Destroyed while thread is still running
Created attachment 109824 [details] dbconfig.xml It fails because of duplicate data in the AlbumRoots table. Normally, ALTER IGNORE TABLE should prevent this. I can not say why this does not work with some MySQL servers. We do the following: Install digiKam-5.8.0 again. Replace the dbconfig.xml in C:\Program Files\digiKam\data\digikam\database with this one. Start digiKam, it should not fail anymore, but do not use the current database. You use the internal server. Copy the database to SQLite with the migration tool and import it back to your internal database. Now you can use digiKam-5.8.0. Maik
(In reply to Maik Qualmann from comment #5) > Created attachment 109824 [details] > dbconfig.xml > > It fails because of duplicate data in the AlbumRoots table. Normally, ALTER > IGNORE TABLE should prevent this. I can not say why this does not work with > some MySQL servers. We do the following: > > Install digiKam-5.8.0 again. Replace the dbconfig.xml in C:\Program > Files\digiKam\data\digikam\database with this one. Start digiKam, it should > not fail anymore, but do not use the current database. You use the internal > server. Copy the database to SQLite with the migration tool and import it > back to your internal database. Now you can use digiKam-5.8.0. > > Maik Thanks Maik, the problem is solved. Roeland
Maik, The new dbconfig.xml file is not yet applied to git master to be included in 5.9.0. Right ? Gilles
Right, and it will not applied. It does not add CONSTRAINT and UNIQUE so the conversion will not fail. Therefore, the database must also be copied using the migration tool. I find it interesting that MySQL does not seem to offer a clean way to convert a table type without failing. As I said, it works for me, probably depending on the used MySQL / MariaDB version. If further problems are reported, I will probably have to program the only remaining option via temp tables. Maik
Git commit 5893fde69518d70904d2b96e13800c7432b4e4c4 by Maik Qualmann. Committed on 15/01/2018 at 19:24. Pushed by mqualmann into branch 'master'. fix schema update from V7/8 to V9 with temporary tables Related: bug 388977, bug 388824 FIXED-IN: 5.9.0 M +4 -2 NEWS M +124 -30 data/database/dbconfig.xml.cmake.in https://commits.kde.org/digikam/5893fde69518d70904d2b96e13800c7432b4e4c4
Fix for digiKam-5.8.0: See Bug 388977 Maik
This bug is not fixed in digikam 5.9. "Failed to update the database schema from version 8 to version 9." Also running MariaDB 10.2.13
(In reply to dajomu from comment #11) > This bug is not fixed in digikam 5.9. "Failed to update the database schema > from version 8 to version 9." Also running MariaDB 10.2.13 This is the output from DebugView; [1788] digikam.widgets: Breeze icons ressource file found [1788] digikam.general: AlbumWatch use QFileSystemWatcher [1788] Failed to query "\\\\?\\acpi#pnp0c0a#1#{72631e54-78a4-11d0-bcf7-00aa00b7b32a}" reason: "The system cannot find the file specified. 2" [1788] digikam.general: Database Parameters: [1788] Type: "QMYSQL" [1788] DB Core Name: "digikam" [1788] DB Thumbs Name: "digikam" [1788] DB Face Name: "digikam" [1788] Connect Options: "" [1788] Host Name: "localhost" [1788] Host port: 3307 [1788] Internal Server: true [1788] Internal Server Path: "C:/Users/beda/Pictures/Digikam" [1788] Internal Server Serv Cmd: "C:/Program Files/MariaDB 10.2/bin/mysqld.exe" [1788] Internal Server Init Cmd: "C:/Program Files/MariaDB 10.2/bin/mysql_install_db.exe" [1788] Username: "root" [1788] Password: "" [1788] [1788] digikam.databaseserver: Database Parameters: [1788] Type: "QMYSQL" [1788] DB Core Name: "digikam" [1788] DB Thumbs Name: "digikam" [1788] DB Face Name: "digikam" [1788] Connect Options: "" [1788] Host Name: "localhost" [1788] Host port: 3307 [1788] Internal Server: true [1788] Internal Server Path: "C:/Users/beda/Pictures/Digikam" [1788] Internal Server Serv Cmd: "C:/Program Files/MariaDB 10.2/bin/mysqld.exe" [1788] Internal Server Init Cmd: "C:/Program Files/MariaDB 10.2/bin/mysql_install_db.exe" [1788] Username: "root" [1788] Password: "" [1788] [1788] digikam.databaseserver: Internal Server data path: "C:/Users/beda/Pictures/Digikam/.mysql.digikam/db_data" [1788] digikam.databaseserver: The mysql configuration was already up-to-date: "C:/Users/beda/AppData/Local/digikam/mysql.conf" [7396] Suspending [1788] digikam.databaseserver: Database server: "C:/Program Files/MariaDB 10.2/bin/mysqld.exe" ("--defaults-file=C:\\Users\\beda\\AppData\\Local\\digikam\\mysql.conf", "--datadir=C:\\Users\\beda\\Pictures\\Digikam\\.mysql.digikam\\db_data", "--skip-networking=0", "--port=3307") [1788] digikam.databaseserver: Internal database server started [1788] digikam.databaseserver: Running 0 seconds... [1788] digikam.dbengine: Loading SQL code from config file "C:/Program Files/digiKam/data/digikam/database/dbconfig.xml" [1788] digikam.dbengine: Checking XML version ID => expected: 3 found: 3 [1788] digikam.coredb: Core database: running schema update [1788] digikam.coredb: Core database: have a structure version 8 [1788] digikam.coredb: Core database: makeUpdates 8 to 9 [1788] digikam.dbengine: Failure executing query: [1788] "" [1788] Error messages: "QMYSQL: Unable to execute query" "Cannot delete rows from table which is parent in a foreign key constraint 'Images_Albums' of table 'images'" 1834 2 [1788] Bound values: () [1788] digikam.dbengine: Error while executing DBAction [ "UpdateSchemaFromV7ToV9" ] Statement [ "ALTER TABLE Albums MODIFY COLUMN relativePath LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;" ] [1788] digikam.coredb: Core database: schema update to V 9 failed! [1788] digikam.coredb: Core database: cannot process schema initialization [1788] KMemoryInfo: Platform identified : "WINDOWS" [1788] KMemoryInfo: TotalRam: 8465080320 [1788] digikam.general: Allowing a cache size of 200 MB [1788] QThreadStorage: Thread 0x23ebb750 exited after QThreadStorage 7 destroyed [1788] QWaitCondition: Destroyed while threads are still waiting [1788] QThread: Destroyed while thread is still running [6900] [kpdf2wordshellext]DllCanUnloadNow, module=C:\Users\beda\AppData\Local\Kingsoft\WPS Office\10.2.0.5996\office6\addons\kpdf2wordshellext\kpdf2wordshellext64.dll [6900] [kpdf2wordshellext]DllCanUnloadNow, module=C:\Users\beda\AppData\Local\Kingsoft\WPS Office\10.2.0.5996\office6\addons\kpdf2wordshellext\kpdf2wordshellext64.dll [6900] [kpdf2wordshellext]DllCanUnloadNow, module=C:\Users\beda\AppData\Local\Kingsoft\WPS Office\10.2.0.5996\office6\addons\kpdf2wordshellext\kpdf2wordshellext64.dll
There should be no mistake here. A table with the lowercase name "images" should not exist. Presumably their database is corrupted by previous update attempts. I'm going to create a custom dbconfig.xml for testing this evening. If that does not work, you'll need to create a new database. Maik
Created attachment 111685 [details] dbconfig.xml As I said, an 'image' table should not exist and was never created by digiKam. This is an individual dbconfig.xml and an attempt to solve the problem without a new database. Please test it. Replace the dbconfig.xml with this one. C:\Program Files\digiKam\data\digikam\database Maik
also on fedora26 (mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64)) after rpm update from 5.5
On which digiKam version updated? Please post the output of the console. Maik
Mistaken upgrade was from 5.7 [ianrob01@nova ~]$ rpm -qa | grep digikam digikam-libs-5.9.0-1.fc26.x86_64 digikam-5.9.0-1.fc26.x86_64 digikam-doc-5.9.0-1.fc26.noarch from non updated machine root@lenovo ~]# rpm -qa | grep digikam digikam-5.7.0-4.fc26.x86_64 digikam-libs-5.7.0-4.fc26.x86_64 digikam-doc-5.7.0-4.fc26.noarch confused as downgrade takes me to 5.5
Please start digiKam in a console and post the messages to see what happens when the database is updated. Maik
[ianrob01@nova ~]$ digikam digikam.coredb: Core database: cannot process schema initialization DB is available and working with 5.7 appimage or docker
I want to see more messages from the console. You may need to enable the debug messages in your distribution first. Maybe look in kdebugdialog, if the output for digiKam is activated. Maik
Hi Maik, Would very much like to give you more debug info am not familiar with kdedebugdialog ( fired it up checked only digikam items , but dont see any additional output ) have installed digikam-debuginfo-5.9.0-1.fc26.x86_64 as suggested by gdb . Can you point me at some help. Prior to raising the bug I saw message about the digikam db user not having sufficient priv ( strace ? ) but am able to reproduce this . ( db is on a remote centos box ) Is there any way or running the schema upgrade standalone as a workaround ?
Please try in the console before executing digiKam to delete this variable. This has nothing to do with the debug packages and does not need to be installed. export QT_LOGGING_RULES="" digikam Maik
QT_LOGGING_RULES was not set [ianrob01@nova ~]$ env | grep QT_LOGGING_RULES [ianrob01@nova ~]$ echo $QT_LOGGING_RULES explicitly setting null made no difference [ianrob01@nova ~]$ export QT_LOGGING_RULES="" [ianrob01@nova ~]$ digikam digikam.coredb: Core database: cannot process schema initialization
Does this file exist? If yes, rename. ~/.config/QtProject/qtlogging.ini Maik
The following might help: export QT_LOGGING_RULES="digikam.*=true" Or also check for qtlogging.ini in /etc/xdg/QtProject/. If there is a "*.debug=false" line in there, that's the problem. This is shipped by default in newer fedora and debian (and thus probably everywhere else too). I asked about it here https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=873369
There may also be a global setting in Fedora, then set the content: [Rules] *.debug=true qt.*.debug=false Maik
Nice one Simon. [ianrob01@nova ~]$ export QT_LOGGING_RULES="digikam.*=true" [ianrob01@nova ~]$ digikam digikam.general: AlbumWatch use QFileSystemWatcher digikam.general: Database Parameters: Type: "QMYSQL" DB Core Name: "digikam5" DB Thumbs Name: "digikam5" DB Face Name: "digikam5" Connect Options: "" Host Name: "pro.barony.loc" Host port: 3306 Internal Server: false Internal Server Path: "" Internal Server Serv Cmd: "" Internal Server Init Cmd: "" Username: "digikam5" Password: "XXXXXXXX" digikam.dbengine: Loading SQL code from config file "/usr/share/digikam/database/dbconfig.xml" digikam.dbengine: Checking XML version ID => expected: 3 found: 3 digikam.coredb: Core database: running schema update digikam.coredb: Core database: have a structure version 8 digikam.coredb: Core database: makeUpdates 8 to 9 digikam.dbengine: Failure executing query: "" Error messages: "QMYSQL: Unable to execute query" "You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)" 1419 2 Bound values: () digikam.dbengine: Error while executing DBAction [ "UpdateSchemaFromV7ToV9" ] Statement [ "DROP TRIGGER IF EXISTS delete_image;" ] digikam.coredb: Core database: schema update to V 9 failed! digikam.coredb: Core database: cannot process schema initialization --- Odd as have granted ALL on digikam5.* to 'digikam5'@'%' - disable binary logging ( mariadb ) Ian
confirm grants look OK to me [root@pro ~]# mysql -udigikam5 -pdigikam5 digikam5 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 114682 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [digikam5]> show grants; +---------------------------------------------------------------------------------------------------------+ | Grants for digikam5@% | +---------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'digikam5'@'%' IDENTIFIED BY PASSWORD '*88AD091BFF5C660C6DB35CEAE6E3A036F01F5C55' | | GRANT ALL PRIVILEGES ON `digikam5`.* TO 'digikam5'@'%' | +---------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
I can not say why you are not a super user. It could help not to use the wildcard character %, but "localhost". Or you can try to set the following variable in mysql: mysql> SET GLOBAL log_bin_trust_function_creators = 1; Maik
Thanks, did the trick. ( db user cannot be @localhost, db runs on centos nas box, digikam runs on various fedora elsewheres [ can only run digikam 4.x on centos ] , suppose '%.barony.loc' would really be best ) Ian
*** Bug 396734 has been marked as a duplicate of this bug. ***