Qt out of memory error opening database

Hi, this is my very first post here and I think that it is fine to start a new thread for this problem because i have been searching for an aswer for 2 days now. I'm working with a little project where I am using sqlite database, which I created and I am...

This topic has been deleted. Only users with topic management privileges can see it.

  • Hi,

    this is my very first post here and I think that it is fine to start a new thread for this problem because i have been searching for an aswer for 2 days now. I’m working with a little project where I am using sqlite database, which I created and I am not getting it to work. I have been working with databases only since this week’s monday so there is much that I don’t know yet but I am eager to learn.

    So here is the code and hopefully someone can point me to right direction with it:

    @bool User::getUser() {
    bool ret = false;
    db_ = QSqlDatabase::addDatabase(«QSQLITE»,»userConnection»);
    db_.setDatabaseName(«C:/Users/Jonne/Desktop/userDatabase.db.sqlite»);

     // Some testing for the file
    QFileInfo fi("C:/Users/Jonne/Desktop/userDatabase.db.sqlite");
    if(QFile::exists("C:/Users/Jonne/Desktop/userDatabase.db.sqlite")) {
         qDebug() << fi.filePath();
     }
    
    if(db_.Open()) {
    
        qDebug() << "Database open.";
    
        QSqlQuery query("SELECT * FROM user;",db_);
        qDebug() << query.lastError();
    
        if (query.first()) {
    
            name_ = query.value(1).toString();
            age_ = query.value(2).toInt();
            gender_ = query.value(3).toString();
            height_ = query.value(4).toDouble();
            weight_ = query.value(5).toDouble();
            ret = true;
        }
    
    } 
    
    db_.close();
    return ret;
    

    }@

    With this code I am getting these outputs and errors:

    @»userConnection»
    QSqlError(-1, «Error opening database», «out of memory»)
    QSqlDatabasePrivate::removeDatabase: connection ‘userConnection’ is still in use, all queries will cease to work.
    QSqlDatabasePrivate::addDatabase: duplicate connection name ‘userConnection’, old connection removed.
    «userConnection»
    QSqlError(-1, «Error opening database», «out of memory»)
    QSqlDatabasePrivate::removeDatabase: connection ‘userConnection’ is still in use, all queries will cease to work.
    QSqlDatabasePrivate::addDatabase: duplicate connection name ‘userConnection’, old connection removed.
    «userConnection»
    QSqlError(-1, «Error opening database», «out of memory») @

    I don’t for example understand why these errors are coming 3 times. I am getting the database from Desktop because I couldn’t get it from the project directory.

    Earlier I got a error message which said that there is not table named user in the database and that was when I tried to load the database from the project folder. Also I have a problem with qt-creator itself because as default it puts build and source files in the same directory and I couldn’t get it to change the build directory.

    Thanks in advance for any help. :)

  • About 3 times messages, I guess it is because somewhere in your program you call function getUser() at least three times. First time connection is created and every next time it is removed and created again.

    The error «QSqlError(-1, «Error opening database», «out of memory»)» can be caused by location of your database. In Windows 7 for folders under «Users» there are limited access rights. It is possible that your program have no right to create and/or modify database on this location. I suggest to change location of database to «C:TestuserDatabase.db.sqlite» for example or some other folder.

  • That is the weird part because I am pretty sure that I call the getUser() function only 1 time but I don’t know why the output looks like that. I changed the location of database as you suggested but the error message is still the same.

  • Hi and welcome to devnet,

    First thing you should do is open your database connection only once at the start of your program since you are using SQLite. Then, if getUser is a slot, verify that you don’t connect to it several times.

    Hope it helps

  • Line 12 should be
    @
    if(db_.open()) { //lowercase «o»
    @

  • So it would be a good way to make separate functions for example openDB() and something like that? Thanks I will give it a try.

    Thanks to panoski also for pointing the mistake, I forgot it because I modified the code a bit.

  • I made separate function for opening the database and I call it at the begin of my program and it solved other problems except the one that matters the most so it doesn’t open the database. The error messages in the output are: @QSqlError(-1, «Error opening database», «out of memory»)
    Unable to open input file: No such file or directory@

    Is there something wrong with my path or what could cause this?

    I am now using this code to open the database:

    @bool User::openDB() {

    // Find QSLite driver
    db_ = QSqlDatabase::addDatabase("QSQLITE");
    db_.setDatabaseName("C:/Databases/userDatabase.db.sqlite");
    
    // Open databasee
    if(db_.open()) {
        return true;
    } else {
        qDebug() << db_.lastError();
        return false;
    }
    

    }@

  • How big is your database ?

  • The database is 2kB and contains only 1 row of User’s information such as name and age.

  • And how did you modify the User::getUser() function?

  • The function is now like this:

    @bool User::getUser() {

    bool ret = false;
    
    if(db_.isOpen()) {
    
        QSqlQuery query("SELECT * FROM user;",db_);
        qDebug() << query.lastError();
    
        if (query.first()) {
    
            name_ = query.value(1).toString();
            age_ = query.value(2).toInt();
            gender_ = query.value(3).toString();
            height_ = query.value(4).toDouble();
            weight_ = query.value(5).toDouble();
            ret = true;
        }
    }
    
    return ret;
    

    }@

  • And I think I should have specified before but I am making a Sailfish application here, does that affect to your advice a lot? Sorry if this was a vital information :/

  • I remember a post where a user had trouble with this QSqlQuery constructor. Try to change your function like this:
    @
    bool User::getUser() {

    bool ret = false;
    
    if(db_.isOpen()) {
    
        QSqlQuery query(db_);
        if(!query.exec("SELECT * FROM user"))
            qDebug() << query.lastError();
    
        if (query.first()) {
    
            name_ = query.value(1).toString();
            age_ = query.value(2).toInt();
            gender_ = query.value(3).toString();
            height_ = query.value(4).toDouble();
            weight_ = query.value(5).toDouble();
            ret = true;
        }
    }
    
    return ret;
    

    }
    @

  • I changed the function like you said but the database isn’t open so I cant test this but it looks better, thanks.

  • Of course, the error prints when opening the database…. Anyway, I suppose you have also double-checked that the path and database file name are accurate.

  • Indeed you should have mention that earlier. Are you running this application on your Windows computer or on the Sailfish emulator/device ? In the second case I don’t think it will access your hard drive to get the file hence the error «no such file or directory»

  • First in function OpenDB add this:
    @ if(db_.open()) {
    QStringList tables = db_.tables();
    qDebug() << «Tables: » << tables;
    return true;
    } else {@

    This will show you all tables in your database if connection is successful.

    1. In the beginning of function getUser add this:
      @QSqlDatabase db_ = QSqlDatabase::database();
      if(db_.isOpen()) {
      QSqlQuery query(db_);@
  • Thanks for replies. I am running the application in Sailfish emulator and I think I should now get familiar with the usage of local storage and how to get database available for my Sailfish application. After that I can continue with these comments you have given.

  • I am a bit confused now. Does someone know how I could store my existing database to local storage and how I could refer to it and use it from my c++ class/object? I did found some examples on how to access database from QML but I would like to access my database from the c++ backend.

  • Hi,

    This test code might help you

    @
    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    if(ConnectLocalDB())
        GetData();
    

    }

    MainWindow::~MainWindow()
    {
    delete ui;
    }

    bool MainWindow::ConnectLocalDB()
    {
    db = QSqlDatabase::addDatabase(«QSQLITE»);

    QString dbpath = "/root/testd.db";
    db.setDatabaseName(dbpath);
    
    QSqlQuery query(QSqlDatabase::database());
    query.exec("CREATE TABLE testtable ("
               "id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
               "testcolumn TEXT);"
               );
    
    query.exec("insert into testtable(testcolumn) values('one')");
    query.exec("insert into testtable(testcolumn) values('two')");
    query.exec("insert into testtable(testcolumn) values('three')");
    
    qDebug() << dbpath;
    
    return db.open();
    

    }

    bool MainWindow::GetData()
    {
    QSqlQuery query(QSqlDatabase::database());
    QString q = «select * from testtable;»;
    query.exec(q);
    while(query.next())
    {
    qDebug() << query.value(1).toString();
    }
    }
    @

    • Home
    • Forum
    • Qt
    • Newbie
    • SQLite Out of Memory error

    1. 16th April 2013, 05:26


      #1

      Default SQLite Out of Memory error

      Hi there! This is my first attempt to use QT and a portable db like SQLite.

      I’ve copied some code from a website to include it in my project, but every time I run it it displays the following message:

      «Error initializing database: Driver not loaded Driver not loaded»

      Here’s my simple code:

      1. QDir dir(dataDir);

      2. QString dbName = dir.filePath("gestion_stock.sqlite");

      3. db.setDatabaseName(dbName);

      4. if (!db.open()) {

      5. return db.lastError();

      6. }

      7. if (!q.exec(QLatin1String("create table if not exists producto(cod_fabrica varchar(20) primary key, "

      8. "cod_proveedor varchar(20), cod_local varchar(20), stock integer, "

      9. "stock_minimo integer, precio_compra decimal(5), precio_venta decimal(5), "

      10. "proveedor varchar(20), gondola varchar(5), estante integer)"))) {

      11. return q.lastError();

      12. }

      13. }

      To copy to clipboard, switch view to plain text mode 

      Don’t mind the spanish names for the table and fields :P

      Any help will be appreciated!


    2. 16th April 2013, 07:43


      #2

      Default Re: SQLite Out of Memory error

      In order to use a Sqlite database your program must have access to the QSqlite plugin, which is not available to your program as the error message indicates. Running inside a normal IDE, where Qt is installed, this should be available. If this program is deployed then you must deploy the relevant plugins (sqldrivers folder) along with the Qt libraries.

      BTW: Why do you think

      «Error initializing database: Driver not loaded Driver not loaded»

      has anything to do with your thread title?

      SQLite Out of Memory error


    3. 16th April 2013, 16:27


      #3

      Default Re: SQLite Out of Memory error

      I forgot to change that, at first it said «Out of memory: sqlite something» then it changed to driver not loaded.

      I have no idea how to do that, I’m running QtCreator.

      If I build the «Books Demonstration» example, which uses SQLite, it works just fine.


    Similar Threads

    1. Replies: 8

      Last Post: 4th June 2010, 19:33

    2. Replies: 10

      Last Post: 27th April 2010, 22:24

    3. Replies: 1

      Last Post: 28th November 2009, 00:54

    4. Replies: 4

      Last Post: 20th July 2009, 13:07

    5. Replies: 1

      Last Post: 19th November 2007, 15:45

    Bookmarks

    Bookmarks


    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •  
    • BB code is On
    • Smilies are On
    • [IMG] code is On
    • [VIDEO] code is On
    • HTML code is Off

    Forum Rules

    Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide.

    1. 1. Структура проекта
    2. 2. mainwindow.ui
    3. 3. PicDataBase.pro
    4. 4. main.cpp
    5. 5. database.h
    6. 6. database.cpp
    7. 7. mainwindow.h
    8. 8. mainwindow.cpp
    9. 9. Итог
    10. 10. Видеоурок

    Изображение в базе данных может быть сохранено в формате

    BLOB

    (англ.

    Binary Large Object

    — двоичный большой объект), то есть в формате массива двоичных данных. Формат

    BLOB

    также подходит для сохранения аудио и видео данных в базах данных.

    Рассмотрим сохранение и восстановление изображения из базы данных на примере следующего приложения, в котором скриншот с экрана компьютера будет сохраняться в базе данных и выводиться в специальный

    QLabel

    , когда соответствующая запись будет выбрана в

    QTableView

    , который будет отображать все записи об изображения, хранящихся в базе данных.

    Таким образом имеем таблицу в базе данных со следующими полями:


    • id (INTEGER)

      — id записи;

    • Name (VARCHAR(255))

      — название хранящегося в базе данных файла;

    • Pic (BLOB)

      — поле для хранения изображений в базе данных.

    Если не вдаваться подробно в урок, то самая ценная информация по данной теме в конце файла

    mainwindow.cpp

    в следующих методах:

    • MainWindow::on_screenButton_clicked()
    • MainWindow::slotCurrentPic(QModelIndex index)

    Структура проекта


    • PicDataBase

      .pro — профайл проекта;

    • database.h

      — заголовочный файл бессменного класса обёртки для работы с базой данных;

    • database.cpp

      — файл исходных кодов класса-обёртки для работы с базой данных;

    • mainwindow.h

      — заголовочный файл основного окна приложения;

    • mainwindow.cpp

      -файл исходных кодов основного окна приложения;

    • mainwindow.ui

      — форма главного окна приложения;

    • main.cpp

      — основной файл исходных кодов приложения.

    mainwindow.ui

    В дизайнере  набрасываем следующую форму окна приложения.

    PicDataBase.pro

    В профайле приложения в обязательном порядке подключаем модуль

    sql

    для работы с базами данных.

    main.cpp

    Файл создан по умолчанию и не подвергается изменениям.

    database.h

    Для работы с базой данных использую уже привычный класс-обёртку

    DataBase

    .


    ВНИМАНИЕ!!! —

    файл базы данных создается в папке

    C:/example

    , поэтому или поправьте метод

    DataBase::connectToDataBase()

    или создайте папку

    example

    на диске

    C

    .

    #ifndef DATABASE_H
    #define DATABASE_H
    
    #include <QObject>
    #include <QSql>
    #include <QSqlQuery>
    #include <QSqlError>
    #include <QSqlDatabase>
    #include <QFile>
    #include <QDate>
    #include <QDebug>
    
    /* Директивы имен таблицы, полей таблицы и базы данных */
    #define DATABASE_HOSTNAME   "ScreenDataBase"
    #define DATABASE_NAME       "Screen.db"
    
    #define TABLE                   "ScreenTable"       // Название таблицы
    #define TABLE_NAME              "Name"              // Вторая колонка
    #define TABLE_PIC               "Pic"               // Третья колонка
    
    // Первая колонка содержит Autoincrement ID
    
    class DataBase : public QObject
    {
        Q_OBJECT
    public:
        explicit DataBase(QObject *parent = 0);
        ~DataBase();
        /* Методы для непосредственной работы с классом
         * Подключение к базе данных и вставка записей в таблицу
         * */
        void connectToDataBase();
    
    private:
        // Сам объект базы данных, с которым будет производиться работа
        QSqlDatabase    db;
    
    private:
        /* Внутренние методы для работы с базой данных
         * */
        bool openDataBase();        // Открытие базы данных
        bool restoreDataBase();     // Восстановление базы данных
        void closeDataBase();       // Закрытие базы данных
        bool createTable();         // Создание таблицы в базе данных
    
    public slots:
        bool insertIntoTable(const QVariantList &data);      // Добавление записей в таблицу
        bool insertIntoTable(const QString &name, const QByteArray &pic);
    };
    
    #endif // DATABASE_H
    

    database.cpp

    #include "database.h"
    
    DataBase::DataBase(QObject *parent) : QObject(parent)
    {
    
    }
    
    DataBase::~DataBase()
    {
    
    }
    
    /* Методы для подключения к базе данных
     * */
    void DataBase::connectToDataBase()
    {
        /* Перед подключением к базе данных производим проверку на её существование.
         * В зависимости от результата производим открытие базы данных или её восстановление
         * */
        if(!QFile("C:/example/" DATABASE_NAME).exists()){
            this->restoreDataBase();
        } else {
            this->openDataBase();
        }
    }
    
    /* Методы восстановления базы данных
     * */
    bool DataBase::restoreDataBase()
    {
        // Если база данных открылась ...
        if(this->openDataBase()){
            // Производим восстановление базы данных
            return (this->createTable()) ? true : false;
        } else {
            qDebug() << "Не удалось восстановить базу данных";
            return false;
        }
        return false;
    }
    
    /* Метод для открытия базы данных
     * */
    bool DataBase::openDataBase()
    {
        /* База данных открывается по заданному пути
         * и имени базы данных, если она существует
         * */
        db = QSqlDatabase::addDatabase("QSQLITE");
        db.setHostName(DATABASE_HOSTNAME);
        db.setDatabaseName("C:/example/" DATABASE_NAME);
        if(db.open()){
            return true;
        } else {
            return false;
        }
    }
    
    /* Методы закрытия базы данных
     * */
    void DataBase::closeDataBase()
    {
        db.close();
    }
    
    /* Метод для создания таблицы в базе данных
     * */
    bool DataBase::createTable()
    {
        /* В данном случае используется формирование сырого SQL-запроса
         * с последующим его выполнением.
         * */
        QSqlQuery query;
        if(!query.exec( "CREATE TABLE " TABLE " ("
                                "id INTEGER PRIMARY KEY AUTOINCREMENT, "
                                TABLE_NAME     " VARCHAR(255)    NOT NULL,"
                                TABLE_PIC      " BLOB            NOT NULL"
                            " )"
                        )){
            qDebug() << "DataBase: error of create " << TABLE;
            qDebug() << query.lastError().text();
            return false;
        } else {
            return true;
        }
        return false;
    }
    
    /* Метод для вставки записи в базу данных
     * */
    bool DataBase::insertIntoTable(const QVariantList &data)
    {
        /* Запрос SQL формируется из QVariantList,
         * в который передаются данные для вставки в таблицу.
         * */
        QSqlQuery query;
        /* В начале SQL запрос формируется с ключами,
         * которые потом связываются методом bindValue
         * для подстановки данных из QVariantList
         * */
        query.prepare("INSERT INTO " TABLE " ( " TABLE_NAME ", "
                                                 TABLE_PIC " ) "
                      "VALUES (:Name, :Pic)");
        query.bindValue(":Name",        data[0].toString());
        query.bindValue(":Pic",         data[1].toByteArray());
    
        // После чего выполняется запросом методом exec()
        if(!query.exec()){
            qDebug() << "error insert into " << TABLE;
            qDebug() << query.lastError().text();
            return false;
        } else {
            return true;
        }
        return false;
    }
    
    /* Второй метод для вставки записи в базу данных
     * */
    bool DataBase::insertIntoTable(const QString &name, const QByteArray &pic)
    {
        QVariantList data;
        data.append(name);
        data.append(pic);
    
        if(insertIntoTable(data))
            return true;
        else
            return false;
    }
    

    mainwindow.h

    Помимо привычных объектов

    DataBase

    и

    QSqlTableModel

    , а также методов настройки модели и представления, которые использовались в предыдущих статьях по

    QSqlRelationalTableModel

    и

    QSqlQueryModel

    , в данном файле присутствуют слоты для обработки нажатия по кнопке и клику по записи в таблице.

    Первый слот выполняет создание скриншота экрана и добавление его в базу данных, а второй слот восстанавливает изображение из базы данных, беря его из объекта

    QSqlTableModel

    в

    QTableView

    и помещая его в

    QLabel

    в главном окне приложения.

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QSqlTableModel>
    #include <QModelIndex>
    
    #include "database.h"
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private slots:
        // Слот для записи скриншота в базу данных
        void on_screenButton_clicked();
        // Слот для получения изображения из базы данных
        void slotCurrentPic(QModelIndex index);
    
    private:
        Ui::MainWindow *ui;
        /* В проекте используются объекты для взаимодействия с информацией в базе данных
         * и моделью представления таблицы базы данных
         * */
        DataBase        *db;
        QSqlTableModel  *model;
    
    private:
        /* Также присутствуют два метода, которые формируют модель
         * и внешний вид TableView
         * */
        void setupModel(const QString &tableName, const QStringList &headers);
        void createUI();
    };
    
    #endif // MAINWINDOW_H
    

    mainwindow.cpp

    Вся главная работа с базой данных и изображением производится в следующих методах:

    • MainWindow::on_screenButton_clicked()
    • MainWindow::slotCurrentPic(QModelIndex index)
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QApplication>
    #include <QBuffer>
    #include <QScreen>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        db = new DataBase();
        db->connectToDataBase();
    
        this->setupModel(TABLE,
                         QStringList() << trUtf8("id")
                                       << trUtf8("Имя изображения")
                                       << trUtf8("изображение")
                         );
    
        this->createUI();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    /* Метод для инициализации модеи представления данных
     * */
    void MainWindow::setupModel(const QString &tableName, const QStringList &headers)
    {
        /* Производим инициализацию модели представления данных
         * с установкой имени таблицы в базе данных, по которому
         * будет производится обращение в таблице
         * */
        model = new QSqlTableModel(this);
        model->setTable(tableName);
    
        /* Устанавливаем названия колонок в таблице с сортировкой данных
         * */
        for(int i = 0, j = 0; i < model->columnCount(); i++, j++){
            model->setHeaderData(i,Qt::Horizontal,headers[j]);
        }
    }
    
    void MainWindow::createUI()
    {
        ui->tableView->setModel(model);     // Устанавливаем модель на TableView
        ui->tableView->setColumnHidden(0, true);    // Скрываем колонку с id записей
        ui->tableView->setColumnHidden(2, true);    // Скрываем колонку с изображением
        // Разрешаем выделение строк
        ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
        // Устанавливаем режим выделения лишь одной строки в таблице
        ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
        // Устанавливаем размер колонок по содержимому
        ui->tableView->resizeColumnsToContents();
        ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);  // Запрещаем редактирование
        ui->tableView->horizontalHeader()->setStretchLastSection(true);     // Растягиваем последнюю колонку по всему tableView
    
        /* Подключаем сигнал об изменении выбора текущей строки в таблицу
         * к СЛОТу для установки изображения в picLabel
         * */
        connect(ui->tableView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),
                this, SLOT(slotCurrentPic(QModelIndex)));
    
        model->select(); // Делаем выборку данных из таблицы
    }
    
    void MainWindow::on_screenButton_clicked()
    {
        /* Делаем скриншот экрана и сохраняем его в объект QByteArray,
         * для этого ...
         * */
        QScreen *screen = QApplication::primaryScreen();    // Берём объект экрана
        QPixmap inPixmap = screen->grabWindow( 0 );         // Сохраняем его в изображение объекта QPixmap
        QByteArray inByteArray;                             // Создаём объект QByteArray для сохранения изображения
        QBuffer inBuffer( &inByteArray );                   // Сохранение изображения производим через буффер
        inBuffer.open( QIODevice::WriteOnly );              // Открываем буффер
        inPixmap.save( &inBuffer, "PNG" );                  // Записываем inPixmap в inByteArray
    
        // Записываем скриншот в базу данных
        db->insertIntoTable(QDateTime::currentDateTime().toString("dd.MM.yyyy_hh:mm:ss.png"), inByteArray);
    
        // Делаем выборку таблицы из Базы Данных
        model->select();
    }
    
    void MainWindow::slotCurrentPic(QModelIndex index)
    {
        QPixmap outPixmap = QPixmap(); // Создаём QPixmap, который будет помещаться в picLabel
        /* Забираем данные об изображении из таблицы в качестве QByteArray
         * и помещаем их в QPixmap
         * */
        outPixmap.loadFromData(model->data(model->index(index.row(), 2)).toByteArray());
        // Устанавливаем изображение в picLabel
        ui->picLabel->setPixmap(outPixmap.scaled(400,300));
    }
    

    Итог

    В результате получаем приложение, которое позволяет сохранять скриншоты экрана в базе данных и восстанавливать данное изображение, отображая его в

    QLabel

    окна приложения. Также комментарии по работе приложения Вы можете услышать в видеоуроке.

    Видеоурок


    out of memory when creating db in non existent directory

    This bug affects 2 people

    Affects Status Importance Assigned to Milestone


    Telegram app

    Fix Released

    Critical


    Unassigned

    Telegram app m9



    U1DB Qt/ QML

    In Progress

    Critical



    Cris Dywan



    u1db-qt (Ubuntu RTM)

    Fix Released

    Undecided


    Unassigned

    Bug Description

    U1db-qt runs out of memory when creating a database in a directory that doesn’t exist. That makes little sense in context of click apps, who’s .config/<package name!> doesn’t not exist by default.

    I.e. if I indicate I want a database in /home/phablet/.config/com.ubuntu.telegram/settings.u1db, I believe u1db-qt should do something along mkdir -p. You may, or may not, agree with me on that part. But it shouldn’t fail with out of memory regardless.

    u1db: Failed to open /home/phablet/.config/com.ubuntu.telegram/settings.u1db: out of memory Error opening database
    file:///opt/click.ubuntu.com/com.ubuntu.telegram/0.8.12.73/telegram.qml:311: TypeError: Cannot read property ‘phoneNumber’ of undefined // because the db doesn’t exist

    Related branches

    Понравилась статья? Поделить с друзьями:
  • Qt error processing project file
  • Pyzmq install error
  • Qt error message box
  • Pywintypes com error python
  • Pyuic5 error one input ui file must be specified