LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: rust on December 27, 2016, 04:09:37 PM

Title: Соединения с БД
Post by: rust on December 27, 2016, 04:09:37 PM
При попытке проверки соединения с БД  зависает. и крешится.
rust@suse:~/develop/LimeReport-1.4/build/5.7.0/linux64/debug/designer> ./LRDesigner
Ошибка сегментирования (core dumped)

Версия LR 1.4.1
собранная на  openSUSE Leap 42.2

Code: [Select]
uname -a
Linux suse 4.4.36-8-default #1 SMP Fri Dec 9 16:18:38 UTC 2016 (3ec5648) x86_64 x86_64 x86_64 GNU/Linux

Никаких сообщений об ошибках нет. Драйвер Mysq рабочий.

[вложение удалено администратором]
Title: Re: Соединения с БД
Post by: Arin Alex on December 27, 2016, 08:01:06 PM
Повторить не удалось. Можете в режиме отладки посмотреть место в котором крашится ?
Title: Re: Соединения с БД
Post by: rust on December 28, 2016, 09:37:14 AM
Я могу ошибаться, но кажется крешится при работе с функцией OPENSSL_ia32_cpu_id.
Скрины прикрепил.

[вложение удалено администратором]
Title: Re: Соединения с БД
Post by: Arin Alex on December 28, 2016, 01:06:25 PM
А соединение с БД не из LimeReport устанавливается ?
Title: Re: Соединения с БД
Post by: rust on January 02, 2017, 10:40:28 PM
Конечно, основной функционал программы с БД работает. А вот начал печатные формы делать, такая вот беда.
Title: Re: Соединения с БД
Post by: Arin Alex on January 04, 2017, 12:39:31 PM
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением. Хотя странно что LimeReport крашится на установлении соединения. Можете заслать демку как вы из приложения создаете соединение ?
Title: Re: Соединения с БД
Post by: aasavelev on January 11, 2017, 06:55:03 PM
Здравствуйте. Подскажите как из дизайнера подключиться к базе данных MYsql? Заполняю все данные и при этом не отображаются таблицы какие есть в бд. Мне кажется что нужно что указывать в поле Database. Во вложении рисунок с заполненными полями.
Title: Re: Соединения с БД
Post by: Arin Alex on January 11, 2017, 07:12:56 PM
LimeReport на данный момент и не показывает таблицы которые есть в БД.
Вы можете проверить устанавливается соединение или нет кнопкой "Check connection"
Title: Re: Соединения с БД
Post by: rust on January 12, 2017, 03:05:06 PM
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением. Хотя странно что LimeReport крашится на установлении соединения. Можете заслать демку как вы из приложения создаете соединение ?
Может я не понял вопрос. Но пока я использовал LM передавая ему значения переменных полученных из БД. Т.е использовал LM только в качестве рисовальшика печатной формы.
Title: Re: Соединения с БД
Post by: aasavelev on January 12, 2017, 06:34:05 PM
LimeReport на данный момент и не показывает таблицы которые есть в БД.
Вы можете проверить устанавливается соединение или нет кнопкой "Check connection"
Ок все понял. Нужно просто строить запрос и тогда отображается то что нужно.
Title: Re: Соединения с БД
Post by: Arin Alex on January 12, 2017, 06:49:35 PM
rust, Я просто хотел посмотреть как вы соединение устанавливаете с БД из своего приложения и сравнить с тем как это делает LimeReport. 
Title: Re: Соединения с БД
Post by: aasavelev on January 14, 2017, 07:30:15 AM
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением.

Подскажите как это реализовать?

Title: Re: Соединения с БД
Post by: Arin Alex on January 15, 2017, 11:17:28 AM
При создании запроса в выпадающем списке соединений  доступно qt_sql_default_connection
Title: Re: Соединения с БД
Post by: rust on January 18, 2017, 12:20:38 PM
Вот мои подключения к БД

database.h

Code: [Select]
#ifndef DATABASE_H
#define DATABASE_H

#include <QtSql>
#include <QMessageBox>
#include <QString>

#define DATABASE_HOSTNAME   "10.28.8.78"
#define DATABASE_NAME       "cso"
#define DATABASE_USER       "csouser"
#define DATABASE_PASS       "SuP0rT"

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(DATABASE_HOSTNAME);
    db.setDatabaseName(DATABASE_NAME);
    db.setUserName(DATABASE_USER);
    db.setPassword(DATABASE_PASS);

    if(!db.open()) {
        qDebug() <<  "Не возможно подключиться к базе данных." << endl << "Причина:" << db.lastError().text();
        QMessageBox::critical(0, qApp->tr("Не могу открыть базу данных"),
                              QString("Не могу установить соединение с базой данных\nПричина: %1").arg(db.lastError().text()),
                              QMessageBox::Cancel);
        return false;
    }
    return true;

}

#endif // DATABASE_H
main.cpp
Code: [Select]
#include "mainwindow.h"
#include "database.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTranslator *qt_translator = new QTranslator();
    if(qt_translator->load(":/Tr/qtbase_ru.qm"))
        a.installTranslator(qt_translator);

    if(!createConnection())
        return 1;

    MainWindow w;
    w.show();

    return a.exec();
}
Title: Re: Соединения с БД
Post by: Arin Alex on January 20, 2017, 11:55:15 PM
rust,
Что самое интересное LimeReport по сути делает тоже самое.
Code: [Select]
QSqlDatabase db = QSqlDatabase::addDatabase(connectionDesc->driver(),connectionDesc->name());
bool connected = false;
db.setHostName(replaceVariables(connectionDesc.host()));
db.setUserName(replaceVariables(connectionDesc.userName()));
db.setPassword(replaceVariables(connectionDesc.password()));
connected=db.open();

Почему валится совершенно не понятно.
Можете заслать пример отчета, который валится ?
И еще раз место в, котором прога крашится, а то я в процессе переезда на другого хостера все аттачи потерял :(   
 
Title: Re: Соединения с БД
Post by: rust on January 22, 2017, 11:36:49 PM
Собрал все под Windows. Все работает.
Буду пересобирать на работе под  Linux постараюсь выложить максимум инфы.
Title: Re: Соединения с БД
Post by: rust on January 24, 2017, 06:28:54 PM
Пересобрал Suse Leap 41.2
Крешится :-(
Title: Re: Соединения с БД
Post by: Arin Alex on January 27, 2017, 01:42:05 AM
У вас limereport собран как разделяемая библиотека ?
Title: Re: Соединения с БД
Post by: rust on January 28, 2017, 12:43:21 PM
Просто компилировал проект в Qt Creator. Никаких дополнительных телодвижений не делал.
Title: Re: Соединения с БД
Post by: Arin Alex on January 28, 2017, 02:17:13 PM
А попробуйте статически линкануть ради интереса
Title: Re: Соединения с БД
Post by: rust on February 16, 2017, 11:17:56 AM
Тогда алгоритм сборки в студию или в личку. :-)