Bug 45499 - QMYSQL driver not loaded
Summary: QMYSQL driver not loaded
Status: NEW
Alias: None
Product: Branch p10
Classification: Unclassified
Component: libmysqlclient21 (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 critical
Assignee: Николай Костригин
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-06 11:37 MSK by Alexander Makeenkov
Modified: 2024-02-16 17:53 MSK (History)
5 users (show)

See Also:


Attachments
Отменяю Faster TLS model (1.13 KB, patch)
2024-02-14 17:47 MSK, Vadim Zelenin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Makeenkov 2023-03-06 11:37:20 MSK
Версия пакета:
libmysqlclient21-8.0.30-alt1.1

Шаги воспроизведения:
# apt-get install python-module-PyQt4 libqt4-sql-mysql libmysqlclient21

Создать и запустить скрипт:
$ cat > test.py <<EOF
import sys
from PyQt4 import QtGui, QtCore, QtSql

appcore = QtCore.QCoreApplication(sys.argv)
db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
EOF

$ python2 test.py

Получаемый результат:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QMYSQL3 QMYSQL

Примечание:
Ошибка не воспроизводится, если откатить libmysqlclient21 до версии 8.0.20-alt2
Comment 1 Sergey V Turchin 2023-03-07 16:49:59 MSK
Попробуйте с build#316279
Comment 2 Alexander Makeenkov 2023-03-07 16:55:05 MSK
(Ответ для Sergey V Turchin на комментарий #1)
> Попробуйте с build#316279

$ python2 test.py
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: 

Не помогло и "available drivers: " стало пустым.
Comment 3 Sergey V Turchin 2023-03-22 12:25:38 MSK
(Ответ для Alexander Makeenkov на комментарий #2)
> Не помогло и "available drivers: " стало пустым.
На чистом Qt4 и до обновления из build#316279 и после список драйверов не изменился.
Возможно, дело в PyQt4.
Comment 4 Sergey V Turchin 2023-03-22 12:30:40 MSK
(Ответ для Sergey V Turchin на комментарий #3)
> На чистом Qt4 и до обновления из build#316279 и после список драйверов не
> изменился.
Т.е. QMYSQL загружается корректно. Если попытаться использовать несуществующий драйвер, ругается:
QSqlDatabase: UNKNOWNSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL3 QMYSQL
Comment 5 Leonid Krivoshein 2023-03-23 15:40:23 MSK
Есть идеи, как чинить регрессию? Пока приходится откатывать libmysqlclient21.
Comment 6 Sergey V Turchin 2023-03-23 16:03:23 MSK
добавил в build#316279 пересборку python-module-PyQt4, авось поможет.
Comment 7 Sergey V Turchin 2023-03-23 17:45:41 MSK
(Ответ для Sergey V Turchin на комментарий #6)
> добавил в build#316279 пересборку python-module-PyQt4, авось поможет.
Не, не помогло.
Comment 8 Sergey V Turchin 2023-04-12 10:35:28 MSK
Может, посмотреть, какие изменения были в libmysqlclient21 и откатить что-то из этого?
Вдруг там что-то тривиальное?
Comment 9 Alexander Makeenkov 2023-11-28 13:17:33 MSK
Актуально для libmysqlclient21-8.0.35-alt1.1
Comment 10 Vadim Zelenin 2024-02-14 15:29:24 MSK
Столкнулся с этой проблемой,
нашёл в ltrace сообщение "cannot allocate memory in static TLS block"
далее нашёл https://bugs.mysql.com/bug.php?id=113029
совет оттуда 

$ LD_PRELOAD=/usr/lib64/libstdc++.so.6 python2 test.py

помогает, программа ругачих сообщений не пишет,
db создаёт, «print db.isValid()» печатает «True».

Товарищи из ubuntu вроде как решали подобную головоломку в 2020 году - 
https://bugs.launchpad.net/ubuntu/+source/opencv/+bug/1890170
https://bugs.launchpad.net/ubuntu/+source/mysql-8.0/+bug/1889851
Comment 11 Sergey V Turchin 2024-02-14 15:41:37 MSK
Видимо, mysql надо собирать с -ftls-model=initial-exec
Comment 12 Vadim Zelenin 2024-02-14 17:47:25 MSK
Created attachment 15555 [details]
Отменяю Faster TLS model
Comment 13 Vadim Zelenin 2024-02-14 17:59:02 MSK
(Ответ для Sergey V Turchin на комментарий #11)
> Видимо, mysql надо собирать с -ftls-model=initial-exec

Наоборот, для этой задачи нехорошо собирать mysql с tls-model=initial-exec.
патч приложил, у меня test.py заработал.