Автор Тема: Метод установки драйвера базы QMYSQL для qtsdk-2009.03?  (Прочитано 8642 раз)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Я не знаю как работают плагины, где их ищет mysql, но пути для стандартных библиотек so прописываются в настройке ldconfig.
http://www.linux.org.ru/forum/development/8464958

Оффлайн VadimZelenin

  • Участник
  • *
  • Сообщений: 116
    • МИС Самсон
Цитировать
Причина также может заключаться в том, что Qt кеширует данные о загрузке плагинов. То есть, если Qt один раз не смогла загрузить плагин, то потом даже не пробует. Чтобы очистить кеш в Windows, необходимо в регистре удалить ненужные записи в ключах HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.5.debug
HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.5.false
Возможно, здесь нужно сделать что-то подобное.

Упомянутым веткам реестра соответствует ~/.config/Trolltech.conf
С другой стороны - я настоятельно рекомендую использовать strace.
strace покажет, какие файлы читались (включая конфигурационные),
в каких директориях происходил поиск библиотек, и что нашлось а что нет, на что не хватило прав и т.п.

Оффлайн PIF

  • Участник
  • *
  • Сообщений: 46
Упомянутым веткам реестра соответствует ~/.config/Trolltech.conf
С другой стороны - я настоятельно рекомендую использовать strace.
strace покажет, какие файлы читались (включая конфигурационные),
в каких директориях происходил поиск библиотек, и что нашлось а что нет, на что не хватило прав и т.п.

Я его использовал, сообщение в теме №10 и прикрепил полный вывод команды для тестовой програмки.
Судя по выводу strace библиотеки он находит (может я конечно и ошибаюсь), но вот никак не желает добавлять к списку баз ничего нового.

Оффлайн VadimZelenin

  • Участник
  • *
  • Сообщений: 116
    • МИС Самсон
Простите, Ваш log_strace.txt не заметил.
Но в нём ничего особенного не вижу, только странно что libqsqlmysql.so находится в трёх разных местах. Но размер его одинаковый, можно предположить что Вы его просто раскопировали в процессе решения этой головоломки.

В линуксе проблем с драйверами у меня пока ещё не было, а в виндовсе бывало. И в аккурат с древними qt, как в вашем эксперименте.

Попробуйте "спрятать" (переименовать, перенести в другой директорий) /home/mike/.config/Trolltech.conf и вновь собрать strace. Если драйвер не найдётся, покажите новый strace (при создании Trolltech.conf), и новый Trolltech.conf тоже покажите.
« Последнее редактирование: 23.04.2013 15:07:05 от VadimZelenin »

Оффлайн PIF

  • Участник
  • *
  • Сообщений: 46
Ну вообщем да, можно считать что раскопировал.
Один родился в процесе комприляции  /opt/qtsdk-2009.03/qt/src/plugins/sqldrivers/mysql/ , и он установил себя в /usr/lib64/qt4/plugins/sqldrivers/libqsqlmysql.so, а один я уже скопировал туда где он якобы должен лежать  /opt/qtsdk-2009.03/qt/plugins/sqldrivers/.

Совет попробую, спасибо!!! Правда, наверное уже завтра, час поздний по местному - как говорится утро вечера ...

Оффлайн PIF

  • Участник
  • *
  • Сообщений: 46
Извиняюсь за задержку. Провёл процедуру по рекомендации, результат тотже. Насторожил Trolltech.conf первая часть с плагинами с записью false.

Оффлайн VadimZelenin

  • Участник
  • *
  • Сообщений: 116
    • МИС Самсон
Извиняюсь за задержку. Провёл процедуру по рекомендации, результат тотже. Насторожил Trolltech.conf первая часть с плагинами с записью false.

В вашем log_strace_new.txt  нет создания Trolltech_conf.txt .
А я просил показать strace при создании Trolltech_conf.txt .
Нужно ещё раз удалить Trolltech_conf.txt и собрать strace вашего  test_sql.

В вашем Trolltech_conf.txt есть различие в описании плагинов -

opt\qtsdk-2009.03\qt\plugins\sqldrivers\libqsqlite.so=40502, 0, x86_64 linux g++-4 full-config, 2009-06-22T17:20:51
opt\qtsdk-2009.03\qt\plugins\sqldrivers\libqsqlite2.so=40502, 0, x86_64 linux g++-4 full-config, 2009-06-22T17:20:51
opt\qtsdk-2009.03\qt\plugins\sqldrivers\libqsqlmysql.so=40804, 0, linux full-config, 2013-04-19T20:21:19
opt\qtsdk-2009.03\qt\plugins\sqldrivers\libqsqlpsql.so=40502, 0, x86_64 linux g++-4 full-config, 2009-06-22T17:20:51

Все плагины кроме libqsqlmysql.so относятся к qt 4.5.2, а libqsqlmysql.so к qt 4.8.4.
Далее, все плагины кроме libqsqlmysql.so помечены как 64-битные библиотеки, а libqsqlmysql.so никак не помечен. Хотя если бы он был бы 32-битным, была бы отметка i386.

Можно предположить, что происходит такая последовательность событий:
- при создании Trolltech_conf.txt не удаётся загрузка плагина libqsqlmysql.so. Это может произойти по разным причинам. Надеюсь, что strace эту причину покажет.
- "обследование" плагина оказывается невозможным, и его флаги оказываются установленными "как попало".
- кроме того, плагин не попадает в список Factory Cache.
- поэтому при перечислении плагинов libqsqlmysql.so оказывается не виден.

Оффлайн PIF

  • Участник
  • *
  • Сообщений: 46
Никак не получается позаниматься этой задачей. Поэтому такие перерывы в теме.

Странно я вроде всё делал как сказано. Может затупил.
Снова кидаю файлы. Чётко отследил удаление Trolltech.conf после появился новый его содержимое скопировал в Trolltech_conf.txt т.к. файлы .conf не принимает форум.

Файлы прикрепляю. Думаю щас удалить libmysqlclient-devel и заново скомпилиовать базу из исходников Трольтечного sdk. Посмотрю что будет.

Оффлайн PIF

  • Участник
  • *
  • Сообщений: 46
Итак, думаю собака порылась здесь:
Процедура устаноки согласно Ответ 12

Неудача, думаю, вызвана тем что пакет libmysqlclient-devel создан для версии qt 4.8.х
поэтому при компиляции стабильно показывается версия библиотеки:
usr\lib64\qt4\plugins\sqldrivers\libqsqlmysql.so=40804, 0, linux full-config, 2013-05-25T17:23:31

Таким образом необходимо установить libmysqlclient-devel для версии qt 4.5.2
Исходя из данных: http://packages.altlinux.org/en/5.0/srpms/qt4/spec
имя нужного пакета в Platform5 (5.0): libMySQL-devel
Теперь вопрос как добыть сие чудо?
« Последнее редактирование: 25.05.2013 20:37:07 от PIF »

Оффлайн VadimZelenin

  • Участник
  • *
  • Сообщений: 116
    • МИС Самсон
Неудача, думаю, вызвана тем что пакет libmysqlclient-devel создан для версии qt 4.8.х
нет. libmysqlclient-devel содержит заголовочные файлы и библиотеки, которые никак не связаны с Qt.

Цитировать
поэтому при компиляции стабильно показывается версия библиотеки:
usr\lib64\qt4\plugins\sqldrivers\libqsqlmysql.so=40804, 0, linux full-config, 2013-05-25T17:23:31
нет, не поэтому.
Вам показывают 4.8.4 потому, что кто-то (вероятно, Вы) собрали плагин как плагин для Qt 4.8.4.
Даже если Вы собираете плагин из исходных текстов Qt 4.5.2.
посмотрите - /src/corelib/plugin/qplugin.h - формирование секции верификации плагина,
/src/corelib/plugin/qlibrary.cpp - проверка "правильности" плагина.   

Цитировать
Таким образом необходимо установить libmysqlclient-devel для версии qt 4.5.2
Исходя из данных: http://packages.altlinux.org/en/5.0/srpms/qt4/spec
имя нужного пакета в Platform5 (5.0): libMySQL-devel
Теперь вопрос как добыть сие чудо?
Очевидно, что если бы Вы использовали пятёрку - то# apt-get install libMySQL-develВпрочем, и в p6 можно попросить установить этот пакет, фактически установится libmysqlclient-devel.

Лучше попробуйте установить переменную окружения QT4DIR (или QTDIR? я не заметил, когда эту переменную переименовали; можете установить обе) в /opt/qtsdk-2009.03/qt (или куда у Вас установлен Qt?), добавить в начало PATH $QT4DIR/bin и пересобрать плагин.

Всё-таки я попрошу разяснения: чем Вам так ценен именно Qt 4.5.2 и почему вы не хотите использовать
штатный 4.8.4?