У меня возникла неразрешимая для меня проблема с ATTACH и DETACH в SQLite с использованием Delphi (Firedac).
У меня подключен один файл базы данных и прикреплен второй файл с:
FDConnection1.ExecSQL('ATTACH DATABASE "' + Import_DB_filename + '" AS IMPORTDB;');
Здесь переменная 'Import_DB_filename' содержит полный путь и имя файла базы данных.
Это работает нормально, и я могу получить доступ к обеим базам данных в рамках соединения через запросы FireDac и могу без проблем выполнять кодирование. Однако при отсоединении что-то идет не так:
FDConnection1.ExecSQL('DETACH DATABASE IMPORTDB;');
В режиме отладки всегда получаю ошибку:
Уведомление об исключении отладчика
Проект E My_Program.EXE вызвал исключение класса $C0000005 с сообщением «Нарушение доступа по адресу 0x00405d7b: чтение адреса 0x00000000».
Видимо что-то не так с назначением памяти, так как отладчик останавливается в (ассемблерной) функции SysFreeMem(P:Pointer): Integer;
в GETMEM.INC
.
Что бы я ни пытался, ошибка сохраняется и связана с утечкой памяти, которая в конечном итоге приводит к сбою компилятора (Delphi Seattle Enterprise).
Даже присоединение и последующее отсоединение базы данных без передачи какого-либо кода приводит к той же ошибке.
(FDconnection: режим блокировки = lmNormal; JournalMode = jmOff или jmWALL или jmdelete)
Я надеюсь, что вы можете помочь мне с этой постоянной проблемой.
FDConnection1
не равноnil
во время вызова detach. Звучит глупо, но важно избавиться от этого. - person Stijn Sanders   schedule 15.03.2016