업데이트 후 Digikam이 시작되지 않음: 데이터베이스 스키마를 버전 12에서 버전 13으로 업데이트할 수 없습니다.

업데이트 후 Digikam이 시작되지 않음: 데이터베이스 스키마를 버전 12에서 버전 13으로 업데이트할 수 없습니다.

저는 Archlinux에서 Digikam을 실행하고 있으며 사진 데이터베이스는 MariaDB에 저장되어 있습니다. 최근 업그레이드 전까지는 잘 작동했습니다. Digikam을 열려고 하면 다음이 반환됩니다.

버전 12에서 버전 13으로 데이터베이스 스키마를 업데이트할 수 없습니다. 콘솔에 인쇄된 오류 메시지를 읽고 이 오류를 bugs.kde.org에 버그로 보고해 주세요.

콘솔에서 열면 다음 메시지가 나타납니다.

digikam.coredb: 핵심 데이터베이스: 스키마 초기화를 처리할 수 없습니다. QThreadStorage: QThreadStorage 13이 삭제된 후 스레드 0x7f77f1091560이 종료되었습니다.

답변1

제 경우에는 다음 위치에 dbconfig.xml 파일이 있습니다.

/usr/share/digikam/database/dbconfig.xml

이 파일에는 실행해야 하는 SQL 명령이 포함되어 있습니다. 이 경우 다음 코드를 분리했습니다.

DROP PROCEDURE IF EXISTS create_index_if_not_exists;

CREATE PROCEDURE create_index_if_not_exists(table_name_vc varchar(50), index_name_vc varchar(50), field_list_vc varchar(1024))
BEGIN

set @Index_cnt = (
    SELECT COUNT(1) cnt
    FROM INFORMATION_SCHEMA.STATISTICS
    WHERE CONVERT(DATABASE() USING latin1) = CONVERT(TABLE_SCHEMA USING latin1)
      AND CONVERT(table_name USING latin1) = CONVERT(table_name_vc USING latin1)
      AND CONVERT(index_name USING latin1) = CONVERT(index_name_vc USING latin1)
);

IF IFNULL(@Index_cnt, 0) = 0 THEN
    set @index_sql = CONCAT(
        CONVERT( 'ALTER TABLE ' USING latin1),
        CONVERT( table_name_vc USING latin1),
        CONVERT( ' ADD INDEX ' USING latin1),
        CONVERT( index_name_vc USING latin1),
        CONVERT( '(' USING latin1),
        CONVERT( field_list_vc USING latin1),
        CONVERT( ');' USING latin1)
    );
    PREPARE stmt FROM @index_sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END IF;
                    END;

CALL create_index_if_not_exists('TagsTree','tagstree_id_index','id');

CALL create_index_if_not_exists('TagsTree','tagstree_pid_index','pid');

ALTER TABLE UniqueHashes CHANGE uniqueHash uniqueHash VARCHAR(128);

CREATE TABLE IF NOT EXISTS CustomIdentifiers
                    (identifier LONGTEXT CHARACTER SET utf8,
                    thumbId INTEGER,
                    UNIQUE(identifier(333)));

CALL create_index_if_not_exists('CustomIdentifiers','id_customIdentifiers','thumbId');

ALTER TABLE Settings RENAME ThumbSettings;

ALTER TABLE ThumbSettings
                    MODIFY COLUMN keyword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
                    MODIFY COLUMN value LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE ThumbSettings ENGINE InnoDB;
ALTER TABLE Thumbnails ENGINE InnoDB;
ALTER TABLE UniqueHashes ENGINE InnoDB;
ALTER TABLE FilePaths MODIFY COLUMN path VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE FilePaths ENGINE InnoDB;
ALTER TABLE CustomIdentifiers MODIFY COLUMN identifier VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE CustomIdentifiers ENGINE InnoDB;

                ALTER TABLE UniqueHashes
                    ADD CONSTRAINT UniqueHashes_Thumbnails FOREIGN KEY (thumbId) REFERENCES Thumbnails (id) ON DELETE CASCADE ON UPDATE CASCADE;

                ALTER TABLE FilePaths
                    ADD CONSTRAINT FilePaths_Thumbnails FOREIGN KEY (thumbId) REFERENCES Thumbnails (id) ON DELETE CASCADE ON UPDATE CASCADE;

                ALTER TABLE CustomIdentifiers
                    ADD CONSTRAINT CustomIdentifiers_Thumbnails FOREIGN KEY (thumbId) REFERENCES Thumbnails (id) ON DELETE CASCADE ON UPDATE CASCADE;

OPTIMIZE TABLE Albums, Images, ImageInformation, ImageMetadata, VideoMetadata, ImagePositions, ImageComments, ImageCopyright, ImageProperties, ImageHistory, ImageRelations, Tags, ImageTags, ImageTagProperties;
OPTIMIZE TABLE Thumbnails, UniqueHashes, FilePaths, CustomIdentifiers;
OPTIMIZE TABLE Identities, IdentityAttributes;
OPTIMIZE TABLE ImageSimilarity, ImageHaarMatrix, SimilaritySettings;
CHECK TABLE Albums, Images, ImageInformation, ImageMetadata, VideoMetadata, ImagePositions, ImageComments, ImageCopyright, ImageProperties, ImageHistory, ImageRelations, Tags, ImageTags, ImageTagProperties;
CHECK TABLE Thumbnails, UniqueHashes, FilePaths, CustomIdentifiers;
CHECK TABLE Identities, IdentityAttributes;
CHECK TABLE ImageSimilarity, ImageHaarMatrix, SimilaritySettings;

내 사진이 저장된 데이터베이스에서 직접 실행합니다. 몇 가지 오류가 있었지만 이 디지털 카메라를 실행한 후 제대로 작동하기 시작했고 모든 것이 순조롭게 보였습니다.

답변2

불행히도 @user74934의 답변에 대해서는 언급할 수 없지만 그의 코드를 실행해 보니 ERROR 1728 (HY000): Cannot load from mysql.proc. The table is probably corruptedmariadb 오류가 발생했습니다.

누구든지 이 문제를 발견하면 StackOverflow에서 영감을 얻어 문제를 해결할 수 있습니다.답변. mariadb-upgrade --socket=mysql.socket digikam인스턴스를 복구하기 위해 다음 명령을 실행했습니다.

관련 정보