SQLite: не удается запустить кэшированный оператор
Я использую Orthanc внутри тома Docker.
volumes:
- /mnt/win_share/test:/var/lib/orthanc/db/
Orthanc.js
путь к файлу для
sqlite
"StorageDirectory": "/var/lib/orthanc/db",
я пытаюсь скопировать путь Orthanc, инициализированный в Docker, на диск, установленный в моей системе Ubuntu, и всякий раз, когда я пытаюсь запустить команды, я получаю следующие ошибки
Ошибки:
- Код ошибки SQLite 5
- Не удается сериализовать механизм заданий: SQLite: невозможно запустить кэшированный оператор
- StatelessDatabaseOperations:3260] ИСКЛЮЧЕНИЕ [SQLite: невозможно запустить кэшированный оператор —]
1 ответ
У меня была аналогичная проблема при попытке запустить два экземпляра Orthanc, указывающих на одну и ту же базу данных SQLite.
По сути, этот код ошибки SQLite 5 означает, что SQLite занят. Единственное решение, которое я смог найти, заключалось в использовании другой базы данных (например, PostgreSQL).
Конфигурационный файл Ортханка:
"Name": "Orthanc inside Docker",
"PostgreSQL" : {
"EnableIndex" : true,
"EnableStorage" : true,
"Lock" : false,
"ConnectionUri" : "postgresql://username:password@host:port/database"
},
"Plugins": [
"/home/user/orthancdatabases/BuildPostgreSQL/libOrthancPostgreSQLIndex.so",
"/home/user/orthanc-databases/BuildPostgreSQL/libOrthancPostgreSQLStorage.so"
],
Это происходит потому, что существует база данных, в которой хранятся файлы DICOM и JSON, и другая база данных, в которой хранится иерархия и теги DICOM. Ко второму синхронно обращается Orthanc.
Однако в подключаемом модуле PostgreSQL база данных для иерархии и тегов изолирована должным образом, что позволяет вам обращаться к одной и той же базе данных сколько угодно раз.
Надеюсь это поможет!