2013-11-06 6 views
1

У меня есть файл фиктивной базы данных (я использую firebird), я заполняю его некоторыми данными, и когда процедура заполнения закончена, я копирую ее и сохраняю с новым именем. Используя приведенный ниже код, кстати:Копия файла базы данных Firebird не открывается

void importdb_module::copyAndSaveDatabaseFile(){ 
    QString source_file = "c:/databases/dummy.fdb"; 
    QString destination_file = QFileDialog::getSaveFileName(this, "Save", "c:/databases/", "*.fdb"); 
    QFile::copy(source_file, destination_file); 

    deleteDummyContent(); 
} 

Он делает то, что предполагают, чтобы сделать - создает копию файла dummy.fdb йота новое имя. Но проблема в том, когда я пытаюсь открыть его с IBexpert я получаю такое сообщение об ошибке: enter image description here

Логин и пароль, которые я использовал были Defualt SYSDBA и masterkey - Я делаю все, ом моей машине, в одной среде. Также dummy.fdb файл и его размеры для копирования одинаковы.

Итак, почему копия стала coorupt? А как правильно скопировать .fdb файлов?

+0

Аутентификация Firebird на уровне сервера, а не в самих базах данных. Вы пытаетесь открыть копию на компьютере, где пароль SYSDBA отличается? – nater

+0

@nater nope, я делаю все это на своей машине, в той же среде! Я имею в виду создание dummy.fdb и создание копии – DanilGholtsman

ответ

4

Перед копированием файла вы должны убедиться, что соединение db закрыто. В противном случае файл не согласован. Лучше использовать утилиту резервного копирования gbak из папки binbirdbird вместо копирования файлов.

+0

ой, спасибо! ну, на самом деле, мне нужно скопировать файлы и сохранить их с новыми именами, это похоже на создание новой базы данных с использованием фиктивного шаблона. – DanilGholtsman

+1

@DanilGholtsman. Даже тогда резервное копирование и восстановление (переносное) - это гораздо лучший план, чем копирование файла, потому что 1) некоторые части файла базы данных зависят от платформы (или могут быть, они были уменьшены в последних версиях Firebird), 2) восстановление будет «обновлять» базу данных до последней версии ODS для сервера Firebird, который вы восстанавливаете. –

Смежные вопросы