LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started 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
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 рабочий.
[вложение удалено администратором]
-
Повторить не удалось. Можете в режиме отладки посмотреть место в котором крашится ?
-
Я могу ошибаться, но кажется крешится при работе с функцией OPENSSL_ia32_cpu_id.
Скрины прикрепил.
[вложение удалено администратором]
-
А соединение с БД не из LimeReport устанавливается ?
-
Конечно, основной функционал программы с БД работает. А вот начал печатные формы делать, такая вот беда.
-
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением. Хотя странно что LimeReport крашится на установлении соединения. Можете заслать демку как вы из приложения создаете соединение ?
-
Здравствуйте. Подскажите как из дизайнера подключиться к базе данных MYsql? Заполняю все данные и при этом не отображаются таблицы какие есть в бд. Мне кажется что нужно что указывать в поле Database. Во вложении рисунок с заполненными полями.
-
LimeReport на данный момент и не показывает таблицы которые есть в БД.
Вы можете проверить устанавливается соединение или нет кнопкой "Check connection"
-
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением. Хотя странно что LimeReport крашится на установлении соединения. Можете заслать демку как вы из приложения создаете соединение ?
Может я не понял вопрос. Но пока я использовал LM передавая ему значения переменных полученных из БД. Т.е использовал LM только в качестве рисовальшика печатной формы.
-
LimeReport на данный момент и не показывает таблицы которые есть в БД.
Вы можете проверить устанавливается соединение или нет кнопкой "Check connection"
Ок все понял. Нужно просто строить запрос и тогда отображается то что нужно.
-
rust, Я просто хотел посмотреть как вы соединение устанавливаете с БД из своего приложения и сравнить с тем как это делает LimeReport.
-
В LimeReport можно использовать дефолтное соединение с бд, которое установлено приложением.
Подскажите как это реализовать?
-
При создании запроса в выпадающем списке соединений доступно qt_sql_default_connection
-
Вот мои подключения к БД
database.h
#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
#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();
}
-
rust,
Что самое интересное LimeReport по сути делает тоже самое.
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();
Почему валится совершенно не понятно.
Можете заслать пример отчета, который валится ?
И еще раз место в, котором прога крашится, а то я в процессе переезда на другого хостера все аттачи потерял :(
-
Собрал все под Windows. Все работает.
Буду пересобирать на работе под Linux постараюсь выложить максимум инфы.
-
Пересобрал Suse Leap 41.2
Крешится :-(
-
У вас limereport собран как разделяемая библиотека ?
-
Просто компилировал проект в Qt Creator. Никаких дополнительных телодвижений не делал.
-
А попробуйте статически линкануть ради интереса
-
Тогда алгоритм сборки в студию или в личку. :-)