Задать вопрос

Как правильно восстановить базу sqlite с помощью Deserialize?

Добрый день, когда я делаю Deserialize(data) база не восстанавливается:
func (dw *databaseWrapper) restoreBackup(ctx context.Context, data []byte) error {

    //_ "modernc.org/sqlite"
    //dw.DB,_ = sql.Open("sqlite",":memory:")
    conn, err := dw.DB.Conn(ctx)
    if err != nil {
        return err
    }
    defer conn.Close()
      
    err = conn.Raw(func(driverConn any) error {
        return driverConn.(sqliteBackuper).Deserialize(data)
    })

    return err
}

Если сохраняю в файл и делаю NewRestore, то всё норм:
func (dw *databaseWrapper) restoreBackup(ctx context.Context, data []byte) error {

    //"modernc.org/sqlite"
    //dw.DB,_ = sql.Open("sqlite",":memory:")
    conn, err := dw.DB.Conn(ctx)
    if err != nil {
        return err
    }
    defer conn.Close()     

	tempFilename := path.Join(os.TempDir(), fmt.Sprintf("backup_%s", dw.randSequence(10)))
    err = os.WriteFile(tempFilename, data, os.ModeAppend)
    if err != nil {
        return err
    }
    
    defer os.RemoveAll(tempFilename)

    err = conn.Raw(func(driverConn any) error {
        bck, err := driverConn.(sqliteBackuper).NewRestore(tempFilename)
        if err != nil {
            return err
        }
        for more := true; more; {
            more, err = bck.Step(-1)
            if err != nil {
                return err
            }
        }
        return bck.Finish()
    })

    return err
}

Как правильно восстановить базу sqlite с помощью Deserialize ? (не хочу обращаться к файловой системе)
  • Вопрос задан
  • 503 просмотра
Подписаться 2 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@12rbah
Ошибка возвращается какая-нибудь?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы