PySide6 QSqlTableModel не видит одну из таблиц QSqlDatabase

В базе данных есть несколько таблиц. Все открываются замечательно, кроме одной.

Структура таблицы messages

db = QSqlDatabase("QODBC")
db.setDatabaseName(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\...\file.accdb")
db.open(username, password)
model = QSqlTableModel(db=db)
model.setTable("messages")
model.select()

Выводит False.

Команда model.lastError().text() выводит:

'Unable to find table messages'

При том, что команда db.tables() выводит:

['messages', 'table1', 'table2', ..., 'tableN']

Непосредственно через MS Access эта таблица открывается

Уже пытался и через цикл открыть. Ключевое слово в db.tables() находилось, но конкретно таблицу 'messages' QSqlTableModel не видит.

Попытался сменить MS Access на версию 2016 года. Думал, вдруг какой-то определённый тип из MS Access 2019 конфликтует со старым драйвером. Не помогло.

Думал скачать более новый драйвер, а такого не нашёл. Пытался покопаться в реестре... Тоже ничего не нашёл.

Пожалуйста, помогите


Ответы (1 шт):

Автор решения: XZSt4nce

Итак, я разобрался в проблеме методом тыка. Я изначально был прав по поводу конфликта драйвера с типом данных bigint, вот только не хватало нескольких дополнительных действий.

По всей видимости, когда вы пытаетесь поставить тип данных bigint и сохранить, Access предупреждает вас, что из-за него БД могут не поддерживать старые версии, а вы всё равно сохраняете, он автоматически ставит минимальную поддерживаемую версию, что-ли?

Помогло разделение данных, предварительно поменяв тип данных bigint на другой тип данных. Работа с базами данных->Перемещение данных->База данных Access.

→ Ссылка